两个人投票的c语言程序,设计网页投票器(二)《精通Unix下C语言编程与项目实践》之十...
本处设计一个网页投票器,它访问“www.zhiliaowang.com”上的服务程序“/toupiaoceshi.asp”,并通过“name”参数向选手投票。如代码15-16所示:
代码15-16网页投票器(节自/code/chapter15/http1.c)
#include
char buf2[]=/*组装HTTP协议GET请求报文*/
"GET /toupiaoceshi.asp?name=朱云翔HTTP/1.0\r\n"
"Accept: */*\r\n"
"Accept-Language: zh-cn\r\n"
"Accept-Encoding: gzip, deflate\r\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)\r\n"
"Host: www.zhiliaowang.com\r\n"
"Connection: Keep-Alive\r\n\r\n";
int main()
{
char buf[2048];
int nSock;
fprintf(stderr, "------------投票开始---------------\n");
ASSERT(ConnectSock(&nSock, 80, "122.51.64.66")==0);/*建立TCP连接*/
WriteFile(nSock, buf2, strlen(buf2));/*发送GET请求*/
fprintf(stderr, buf2);
memset(buf, 0, sizeof(buf));
recv(nSock, buf, sizeof(buf), 0);/*接收GET请求*/
fprintf(stderr, buf);
close(nSock);/*释放TCP连接*/
fprintf(stderr, "------------投票结束---------------\n");
}
其中“\r\n”是回车换行,IP地址“122.51.64.66”是网站“www.zhiliaowang.com”的IP地址,读者可以通过执行ping命令从域名转换到IP地址:
# ping www.zhiliaowang.com
PINGwww.zhiliaowang.com (122.51.64.66): 56 data bytes
64 bytes from 122.51.64.66: icmp_seq=0 ttl=127 time=20 ms
本处并没有使用套接字发送函数send,而是调用了封装write的函数WriteFile来发送GET请求,这说明底层文件编程库也能作用于套接字描述符,函数write和read也能实现套接字信息的发送和接收。
编译代码15-16:
# make http1
cc -o http1 http1.c -O -DUNIX -DDEBUG -DTRACE_FILE='"./trace"' -D__PATH__='"/"' -I/u/zyx/code/comlib/include-L/u/zyx/code/comlib/lib-lcom
运行代码15-16:
# ./http1
------------投票开始---------------
GET /toupiaoceshi.asp?name=朱云翔HTTP/1.0/*请求行*/
………………………………/*省略*/
HTTP/1.1 200 OK/*状态行*/
…………………………………/*省略*/
------------投票结束---------------
【实践经验】程序http2只实现了向一个特定的WEB网页投票的功能,当WEB服务器、网页和参数发生变化,程序也必须做响应的改动。
例1.更改代码15-16,设计关于以下URL的自动投票程序:
http://publish.games.sina.com.cn/poll.php?p_id=560&t_id=1327
答:首先更改GET行常数为:
char buf2[]=
"GET /poll.php?p_id=560&t_id=1327 HTTP/1.1\n"
………………………………
其次,更改报文头属性Host:
"Host: publish.games.sina.com.cn\n"
最后更改TCP连接语句中的目的方IP地址即可:
ASSERT_NORMAL(ConnectSock(&nSock, 80, "202.108.43.242"));
【注意】本节讲述网页投票器的设计,其目的只是为了向读者阐述基于TCP连接的SOCKET程序设计方法,并不是号召大家在各类投票活动中作弊。选手的票数应该凭自己的真本领获取,而不能借助所谓的网页投票器,况且很多投票活动都限制了同一IP的投票时间间隔和投票次数,这些措施都极大限制了网页投票器的使用范围。
两个人投票的c语言程序,设计网页投票器(二)《精通Unix下C语言编程与项目实践》之十...相关推荐
- Unix下设计动态库的方法《精通Unix下C语言编程与项目实践》(一)
精通Unix下C语言编程与项目实践 之动态库的生成 作者:朱云翔,胡平 3.3 动态库的生成 动态库的生成可分为三个步骤,设计库源码.编译位置无关码(PIC)型.o文件和链接动态库.链接动态库的命令包 ...
- 不要在Unix下遍桌面程序(1)《精通Unix下C语言与项目实践》读书笔记(9)
<精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...
- Unix编程需要学习的内容(3)《精通Unix下C语言与项目实践》读书笔记(13)
<精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...
- 学习Unix,可从事什么样的工作(2)《精通Unix下C语言与项目实践》读书笔记(4)...
<精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的 ...
- 文件锁操作《精通Unix下C语言编程与项目实践》之三
文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的职场感悟吧.不值钱的软件人才 精力充沛与事业成功 我的诗歌:都是我的打 ...
- Java编程比C编程好吗?《精通Unix下C语言与项目实践》读书笔记(15)
<精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...
- 学习Unix,可从事什么样的工作(3)《精通Unix下C语言与项目实践》读书笔记(5)...
<精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...
- Unix编程要学习的内容(2)《精通Unix下C语言与项目实践》读书笔记(12)
文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的职场感悟吧.不值钱的软件人才 精力充沛与事业成功 让系分来得更猛 ...
- Unix朝代歌《精通Unix下C语言与项目实践》读书笔记(7)
<精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...
最新文章
- 数据结构_顺序栈的代码实践
- 2020人工神经网络第一次作业-解答第一部分
- POJ1849 Two——贪心——Pku1849
- python利用近似公式计算π_Excel函数公式大全之利用SUMSQ函数快速计算多个数据的平方和...
- mysql数据库(3)-查询
- 使用头文件的原因和规范
- JavaScript学习总结(12)——2016 年 7 个顶级 JavaScript 框架
- mysql免安装版的下载与安装
- scala中的协变和逆变
- 俄罗斯一款地图软件无意曝光300多个军事基地
- 15个mysql使用管理命令
- 面向对象程序设计第三单元总结(规格系列)
- 靶机渗透之Typhoon实战
- 用Python自动化办公操作PPT,掌握这些技巧没压力!
- ADS1292R的使用
- 常用网站攻击手段及防御方法
- 【往届四个月检索,EI会议】第二届通讯技术与信息科技国际学术会议(ICCTIT 2022)
- 曲线拟合的最小二乘原理
- pythoc_autocad_标注_all_横线_竖线
- 中国HIS企业发展思考与展望