设计网页投票器(二)《精通Unix下C语言编程与项目实践》之十

网友投稿 639 2022-09-25

设计网页投票器(二)《精通Unix下C语言编程与项目实践》之十

设计网页投票器(二)《精通Unix下C语言编程与项目实践》之十

《精通Unix下C语言编程与项目实践》之十

设计网页投票器 (二)

作者:朱云翔,胡平

15.4.3 网页投票器

本处设计一个网页投票器,它访问“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: 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”是网站“zhiliaowang.com”的IP地址,读者可以通过执行ping命令从域名转换到IP地址: # ping zhiliaowang.com PING 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 -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-/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-\n" 最后更改TCP连接语句中的目的方IP地址即可: ASSERT_NORMAL(ConnectSock(&nSock, 80, "202.108.43.242")); 【注意】本节讲述网页投票器的设计,其目的只是为了向读者阐述基于TCP连接的SOCKET程序设计方法,并不是号召大家在各类投票活动中作弊。选手的票数应该凭自己的真本领获取,而不能借助所谓的网页投票器,况且很多投票活动都限制了同一IP的投票时间间隔和投票次数,这些措施都极大限制了网页投票器的使用范围。

相关文章:

封面          前言        目录         策划         作者

动态库        变长参数    文件锁       外设         僵死进程

定时器        I/O重定向   消息队列    共享内存

实践项目:

开发网页投票器(一)  (二) 开发网页投票器

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:FreeBSD 7.1 Release下使用 Intel 4965AGN Intel Wireless WiFi Link 4965AGN的方法[原创分享]
下一篇:兔宝宝X《余生请多指教》,以营销传播精准拥抱年轻群体!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~