两个人投票的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语言编程与项目实践》之十...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux符号表(linux 符号)
- 下一篇: 股票账户怎么添加2个银行卡?