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
- 点赞
- 收藏
- 关注作者
技术火炬手2018/12/21 09:32:361楼编辑删除举报
如需调整,请先把第三方的图片存本地,再插入本地的图。