C语言开发短信原理如何实现接口发短信demo

news/2024/5/18 15:59:42 标签: c语言, udp, linux

用户将收到的短信验证码填写到网站,网站对用户填写的验证码进行校验,如果一致,说明用户填写的手机号码是正确的,否则验证失败。

在开通手机短信验证功能之前,需要将网站同接口进行对接,对接的相关说明可以访问这个链接:。下载相应接口文件及说明文档,接入网站并调试运行。

本文为您提供了C语言版本的验证码短信接口对接DEMO示例

//接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。

//账户注册:请通过该地址开通账户http://user.ihuyi.com/?t9nyDN

//注意事项:

//(1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。

//(2)请使用 APIID 及 APIKEY来调用接口,可在会员中心获取;

//(3)该代码仅供接入互亿无线短信接口参考使用,客户可根据实际需要自行编写;

#include <stdio.h>

#include <sys/socket.h>

#include <sys/types.h>

#include <time.h>

#include <errno.h>

#include <signal.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <sys/wait.h>

#include <sys/time.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define IPSTR "106.ihuyi.com"

#define PORT 80

#define BUFSIZE 1024

//调试日期 2015-07-27

//linux下的编译方法 gcc -o sms sms.c

int main(int argc, char **argv)

{

        int sockfd, ret, i, h,srandnum;

        struct sockaddr_in servaddr;

        char str1[4096], str2[4096], buf[BUFSIZE], *str;

        socklen_t len;

        fd_set  t_set1;

        struct timeval  tv;

        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {

                printf("创建网络连接失败,本线程即将终止---socket error!\n");

                exit(0);

        };

        bzero(&servaddr, sizeof(servaddr));

        servaddr.sin_family = AF_INET;

        servaddr.sin_port = htons(PORT);

        if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0 ){

                printf("创建网络连接失败,本线程即将终止--inet_pton error!\n");

                exit(0);

        };

        if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){

                printf("连接到服务器失败,connect error!\n");

                exit(0);

        }

        printf("与远端建立了连接\n");

        //发送数据

//查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID

//查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY

        memset(str2, 0, 4096);

        strcat(str2, "account=用户名&password=密码&mobile=18930634151&content=您的验证码是:1212。请不要把验证码泄露给其他人。");

        str=(char *)malloc(128);

        len = strlen(str2);

        sprintf(str, "%d", len);

        memset(str1, 0, 4096);

        strcat(str1, "POST /webservice/sms.php?method=Submit&format=json HTTP/1.1\n");

        strcat(str1, "Host: 106.ihuyi.com\n");

        strcat(str1, "Content-Type: application/x-www-form-urlencoded\n");

        strcat(str1, "Content-Length: ");

        strcat(str1, str);

        strcat(str1, "\n\n");

        strcat(str1, str2);

        strcat(str1, "\r\n\r\n");

        printf("%s\n",str1);

        ret = write(sockfd,str1,strlen(str1));

        if (ret < 0) {

                printf("发送失败!错误代码是%d,错误信息是'%s'\n",errno, strerror(errno));

                exit(0);

        }else{

                printf("消息发送成功,共发送了%d个字节!\n\n", ret);

        }

        FD_ZERO(&t_set1);

        FD_SET(sockfd, &t_set1);

        while(1){

                sleep(2);

                tv.tv_sec= 0;

                tv.tv_usec= 0;

                h = 0;

                printf("--------------->1\r\n");

                h = select(sockfd +1, &t_set1, NULL, NULL, &tv);

                printf("--------------->2%d\r\n",h);

                //if (h == 0) continue;//break;

                if (h == 0) {

                        close(sockfd);

                        printf("连接关闭!\n");

                        return 1;

                };

                if (h < 0) {

                        close(sockfd);

                        printf("在读取数据报文时SELECT检测到异常,该异常导致线程终止!\n");

                        return -1;

                };

                if (h > 0){

                        memset(buf, 0, 4096);

                        i= read(sockfd, buf, 4095);

                        if (i==0){

                                close(sockfd);

                                printf("读取数据报文时发现远端关闭,该线程终止!\n");

                                return -1;

                        }

                        printf("%s\n", buf);

                }

        }

        close(sockfd);

        return 0;

}


http://www.niftyadmin.cn/n/1787906.html

相关文章

ruby如何开发接入短信发送预约挂号、医嘱、体检报告等短信demo示例

短信群发业务在各行各业的应用已经很普遍了&#xff0c;现在已经和网上医疗产生了火花。现在大部分大型医院和社区医院都建立了便捷的微信官方账号服务&#xff0c;医院微信官方账号离不开短信群发业务的帮短信群发业务在各行各业的应用已经很普遍了&#xff0c;现在已经和网上…

[洛谷5142]区间方差 题解

前言 这是一道线段树板子题。 题解 我们观察这个式子\[avg\frac{1}{n}\sum_{i1}^n a_i\]\[d\frac{1}{n}\sum_{i1}^n (a_i-avg)^2\] 我们把它展开变成\[d\frac{1}{n}\sum_{i1}^n (a_i^2-2\times a_i \times avg - avg^2)\] 提出常数项得\[d\frac{1}{n}(\sum_{i1}^n a_i^2-2\time…

PHP如何接入物流行业系统群发短信通知服务?

应用场景: 取餐通知 骑士在面对集中派单场景&#xff0c;提前发起语音通知&#xff0c;自动通知所有用户前来取单&#xff0c;大幅提升派送效率。 用户验证 新用户注册验证、确认支付物流费用&#xff0c;有效确认用户真实性。 配送通知 提示用户配送时间、配送员信息及配…

在Ubuntu 14.04 64bit中永久添加DNS的方法

sudo vim /etc/resolvconf/resolv.conf.d/base nameserver 8.8.8.8nameserver 202.106.196.115nameserver 202.106.0.20nameserver 114.114.114.114 修改好后保存&#xff0c;然后执行sudo /sbin/resolvconf -u或者sudo etc/init.d/resolvconf restart 或者重启系统,再查看/etc…

SHELL如何接入医院门诊、住院管理等系统接入群发短信通知服务?

医疗行业短信应用场景: 1、短信挂号 2、移动医嘱 3、医嘱治疗 4、康复跟踪 5、民意调查 6、短信查询及通知(医疗流程介绍、体检结果通知等) 7、信息发布(医学小常识等) 8、专家短信坐席 9、信息化办公 10、企业宣传 11、病人的关心 本文为您提供了SHELL语言版本的验…

geometry_msgs.msg.PoseStamped 代码示例

https://programtalk.com/python-examples/geometry_msgs.msg.PoseStamped/ 转载于:https://www.cnblogs.com/sea-stream/p/11129929.html

RUBY如何开发接入短信发送预约挂号,体检报告等短信demo示例

事实上&#xff0c;大家都知道&#xff0c;短信群发平台在医疗行业应用之后&#xff0c;比较有特色的是普及宣传医疗卫生知识&#xff0c;增加医疗服务&#xff0c;提高就诊率。而短信平台从前期宣传到短信预约&#xff0c;检查治疗&#xff0c;再到后期跟踪服务&#xff0c;一…

数据类型及常用方法

阅读目录 一、引子 二、数字 三、字符串 四、列表 五、元祖 六、字典 七、集合 八、数据类型总结 九、运算符 十、字符编码 十一、文件处理 十二、作业 # 一 引子 1 什么是数据&#xff1f; x10&#xff0c;10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的…