C语言实现在线获取彩票数据
【摘要】 编程思路彩票选择的理由:(1)数据量要大,双色球就不满足。(2)开奖间隔要短,避免人为因素等来影响。我选择:快开彩,每个省都有,湖南这边叫做动物总动员快乐十分。每天开84期,从9点钟到晚上11点,每隔10分开一期。每期从1-20个数里选择8个数作为开奖号码。只要中2个或者3个就可以兑奖。欢迎加入学习群【892643663】,获取全套免费C/C++企业实战级课程资源(素材+源码+视频)和编译大...
编程思路
彩票选择的理由:
(1)数据量要大,双色球就不满足。
(2)开奖间隔要短,避免人为因素等来影响。
我选择:快开彩,每个省都有,湖南这边叫做动物总动员快乐十分。
每天开84期,从9点钟到晚上11点,每隔10分开一期。
每期从1-20个数里选择8个数作为开奖号码。只要中2个或者3个就可以兑奖。
欢迎加入学习群【892643663】,获取全套免费C/C++企业实战级课程资源(素材+源码+视频)和编译大礼包
##编程从提供开奖数据的网站那里直接获取开奖结果,然后再分析
Todo1: 找哪个网站?https://market.aliyun.com/ 阿里云市场里面有一个api。
彩票API
调用地址:http://gie777.market.alicloudapi.com/Kaijiang/[Kaijiang]/date/[date]/
请求方式:GET
返回类型:JSON
API 调用:API 简单身份认证调用方法(APPCODE)展开API 签名认证调用方法(AppKey & AppSecret)
Todo2:用什么语言?怎么调用api?
用C语言编程,用HTTP的方式去调用api。得到的数据,用cJson库来解析获得的JSON数据。
详细:
创建一个套接字去访问,然后发送http请求给服务器,然后获取返回的数据,用cJSON库来解析某个数字的出现次数。
代码
#include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netdb.h> #include <stdio.h> #include <string.h> // 用C编程访问彩票api,在线获取开奖数据,分析某个数出现的几率 // 文件: /Kaijiang/HNKLSF/date/20181213/ // Authorization:APPCODE b533e3b56bcd4c96982f9d3643601951 //http请求头,由方法行+换行符+头部(有多个)+换行符+换行符 char *request="GET /Kaijiang/BJPK10/date/20181213/ HTTP/1.1\r\n" "Host:gie777.market.alicloudapi.com\r\n" "Authorization:APPCODE b533e3b56bcd4c96982f9d3643601951\r\n\r\n"; char *p="hello""world"; int main(void) { //1 创建一个套接字,设置好服务器的地址,连接服务器 int sockfd=socket(AF_INET,SOCK_STREAM,0); struct hostent *ent=gethostbyname("gie777.market.alicloudapi.com");//解析服务器的域名,得到ip地址 if(ent==NULL) { printf("域名解析失败\n"); return -1; } //dns 是解析域名的服务器,能够根据某个域名得出它的真正ip printf("ip %s\n",inet_ntoa(*(struct in_addr *)ent->h_addr)); //1-2 连接到服务器 struct sockaddr_in sin; bzero(&sin,sizeof(sin));//清空 sin.sin_family=AF_INET; sin.sin_port=htons(80); //端口80,转换成大端模式 sin.sin_addr=*(struct in_addr *)ent->h_addr;//ip地址 int r=connect(sockfd,(struct sockaddr *)&sin,sizeof(sin)); if(r==-1) { perror("connect");//如果失败,输出并返回 return -1; } printf("服务器连接成功\n"); //2 发送http请求 ssize_t wlen=write(sockfd,request,strlen(request)); if(wlen<0) { perror("write"); return -1; } //3 读取网站发回来的数据 char buffer[1024*1024]={0}; char c; int i=0; while(read(sockfd,&c,1)==1) { buffer[i++]=c; } printf("%s\n",buffer); return 0; }
欢迎加入学习群【892643663】,获取全套免费C/C++企业实战级课程资源(素材+源码+视频)和编译大礼包
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)