本处设计一个网页投票器,它访问“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语言编程与项目实践》之十...相关推荐

  1. Unix下设计动态库的方法《精通Unix下C语言编程与项目实践》(一)

    精通Unix下C语言编程与项目实践 之动态库的生成 作者:朱云翔,胡平 3.3 动态库的生成 动态库的生成可分为三个步骤,设计库源码.编译位置无关码(PIC)型.o文件和链接动态库.链接动态库的命令包 ...

  2. 不要在Unix下遍桌面程序(1)《精通Unix下C语言与项目实践》读书笔记(9)

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...

  3. Unix编程需要学习的内容(3)《精通Unix下C语言与项目实践》读书笔记(13)

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...

  4. 学习Unix,可从事什么样的工作(2)《精通Unix下C语言与项目实践》读书笔记(4)...

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的 ...

  5. 文件锁操作《精通Unix下C语言编程与项目实践》之三

    文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的职场感悟吧.不值钱的软件人才 精力充沛与事业成功 我的诗歌:都是我的打 ...

  6. Java编程比C编程好吗?《精通Unix下C语言与项目实践》读书笔记(15)

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...

  7. 学习Unix,可从事什么样的工作(3)《精通Unix下C语言与项目实践》读书笔记(5)...

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...

  8. Unix编程要学习的内容(2)《精通Unix下C语言与项目实践》读书笔记(12)

    文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的职场感悟吧.不值钱的软件人才 精力充沛与事业成功   让系分来得更猛 ...

  9. Unix朝代歌《精通Unix下C语言与项目实践》读书笔记(7)

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...

最新文章

  1. 数据结构_顺序栈的代码实践
  2. 2020人工神经网络第一次作业-解答第一部分
  3. POJ1849 Two——贪心——Pku1849
  4. python利用近似公式计算π_Excel函数公式大全之利用SUMSQ函数快速计算多个数据的平方和...
  5. mysql数据库(3)-查询
  6. 使用头文件的原因和规范
  7. JavaScript学习总结(12)——2016 年 7 个顶级 JavaScript 框架
  8. mysql免安装版的下载与安装
  9. scala中的协变和逆变
  10. 俄罗斯一款地图软件无意曝光300多个军事基地
  11. 15个mysql使用管理命令
  12. 面向对象程序设计第三单元总结(规格系列)
  13. 靶机渗透之Typhoon实战
  14. 用Python自动化办公操作PPT,掌握这些技巧没压力!
  15. ADS1292R的使用
  16. 常用网站攻击手段及防御方法
  17. 【往届四个月检索,EI会议】第二届通讯技术与信息科技国际学术会议(ICCTIT 2022)
  18. 曲线拟合的最小二乘原理
  19. pythoc_autocad_标注_all_横线_竖线
  20. 中国HIS企业发展思考与展望

热门文章

  1. c++返回指针时候注意提防_编写干净的测试–提防魔术
  2. 最好的Java开发人员测试和集成工具
  3. 适用于Java开发人员的Elasticsearch:Java的Elasticsearch
  4. 摆脱困境:将属性值注入配置Bean
  5. jQuery Ajax – Servlets集成:构建完整的应用程序
  6. JPA教程:实体映射-第2部分
  7. HawtIO在JBoss EAP上(第二部分)
  8. Hadoop开发工具简介
  9. JavaFX中的塔防(5)
  10. 构建和运行Java 8支持