日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

两个人投票的c语言程序,设计网页投票器(二)《精通Unix下C语言编程与项目实践》之十...

發布時間:2023/12/3 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两个人投票的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语言编程与项目实践》之十...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。