




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、計算機網(wǎng)絡(luò)實踐設(shè)計報告學(xué)院: 計算機 班級: 成教2012業(yè)余 教師: 李領(lǐng)治 學(xué)號: 姓名: 成績: 實驗?zāi)康模赫莆誛insock2.0套接字編程技術(shù)的基本方法。實驗要求:運用TCP/IP Winsock2.0套接字編程技術(shù),使用VC編寫一個面向連接通信的服務(wù)端程序與客戶端程序,服務(wù)器先與端口3000綁定,然后等待客戶連接,連接成功后就可與客戶端互相收、發(fā)信息。交互中,通信任一方只要發(fā)送 bye, 通信過程便自動結(jié)束。實驗源程序:服務(wù)器程序:#pragma comment (lib, "Ws2_32.lib") /Winsock 2 函數(shù)庫/-#include <c
2、onio.h>#include <stdio.h>#include <winsock2.h> /Winsock 2 函數(shù)頭文件/-bool InitSocket(); int main(int, char*)struct sockaddr addr;int len;bool over;char msg255;SOCKET sock, sersock;if( !InitSocket() ) return 0; /加載初始化 Winsock 2 動態(tài)鏈接庫 Ws2_32.dllsock = socket( AF_INET,SOCK_STREAM,0 ); /創(chuàng)建監(jiān)聽的
3、流套接口 if( sock=INVALID_SOCKET ) /不能創(chuàng)建,返回printf("不能創(chuàng)建Socket!n");getch();WSACleanup( ); /卸載Winsock 2動態(tài)鏈接庫Ws2_32.dllreturn 0;/設(shè)置本服務(wù)器IP地址和端口號(sockaddr_in*)&addr)->sin_family = AF_INET; /AF_INET:使用Internet 協(xié)議(sockaddr_in*)&addr)->sin_port = htons(3000); /服務(wù)器端口號3000(sockaddr_in*)&am
4、p;addr)->sin_addr.s_addr = inet_addr("127.1.1.1"); /主機地址/把套接口與地址綁定bind(sock,&addr,sizeof(addr);/服務(wù)進程準(zhǔn)備接收套接口上的連接請求listen(sock,1); /監(jiān)聽方式,準(zhǔn)備接收連接請求:1-允許等待隊列中的連接請求1個/接受網(wǎng)絡(luò)連接,生成新的套接口sersock標(biāo)識這一連接printf("等待客戶連接!n");len = sizeof(addr);sersock = accept( sock,&addr,&len );/從等
5、待隊列中檢取連接請求,如隊列空則進程阻塞等待;/如不空,則接受客戶連接,使用返回連接套接口sersock與該客戶連接。/原套接口sock可繼續(xù)監(jiān)聽其它客戶請求。if(sersock=INVALID_SOCKET) /若套接口sersock 出錯DWORD err = WSAGetLastError();char txt100;sprintf(txt,"error when accept!-errno:%d",err);printf(txt);getch();closesocket(sock); /關(guān)閉監(jiān)聽套接口sockWSACleanup( ); /卸載Winsock 2動
6、態(tài)鏈接庫Ws2_32.dllreturn 0;printf("有客戶連接!n輸入bye通信結(jié)束n");over = false; /狀態(tài)設(shè)置為未結(jié)束/與客戶交互會話,直至任一方打入bye后退出循環(huán)doprintf("n等待對方用戶輸入信息.");len = recv ( sersock,msg,200,0 ); /接收對方信息printf("n對方輸入:%s",msg); /顯示對方信息if( strcmp(msg,"bye")=0 ) /若對方信息為bye就結(jié)束通信break;printf("n本方回答
7、:");gets(msg); /鍵入本方信息if( strcmp(msg,"bye")=0 ) over = true; /若本方發(fā)出bye就結(jié)束通信send ( sersock,msg,strlen(msg)+1,0 ); /將本方鍵入信息發(fā)給對方 while( !over );closesocket(sersock); /關(guān)閉連接套接口closesocket(sock); /關(guān)閉監(jiān)聽套接口printf("nn會話結(jié)束,按任一鍵返回n");getch();WSACleanup( ); /卸載 Winsock 2 動態(tài)鏈接庫Ws2_32.dll
8、return 0;/-/下述函數(shù)加載初始化Winsock 2 動態(tài)鏈接庫 Ws2_32.dllbool InitSocket() WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 0 ); /Wiinsock2.0版err = WSAStartup( wVersionRequested, &wsaData ); /加載if ( err != 0 ) /沒有Winsock 2 動態(tài)鏈接庫 Ws2_32.dllprintf("沒有Windows Socket動態(tài)庫!n&q
9、uot;);getch();return false;if ( LOBYTE( wsaData.wVersion ) != 2 | /不是Winsock 2.0HIBYTE( wsaData.wVersion ) != 0 ) printf("需要Windows Socket 2!n");getch();WSACleanup( ); /卸載 Winsock 動態(tài)鏈接庫return false;return true;客戶端程序:#pragma comment (lib, "Ws2_32.lib") /Winsock 2 函數(shù)庫/-#include <
10、;conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <winsock2.h> /Winsock 2 函數(shù)頭文件/-bool InitSocket(); int main(int , char*)int type;SOCKET sock; struct sockaddr addr; int len,portno;int err;char msg255;bool over;if( !InitSocket() ) return 0; /加載初始化 Wi
11、nsock 2 動態(tài)鏈接庫 Ws2_32.dlltype = SOCK_STREAM; sock = socket( AF_INET,type,0 ); /創(chuàng)建客戶端流套接口if( sock=INVALID_SOCKET ) /不能創(chuàng)建,返回printf("不能創(chuàng)建Socket!");getch();WSACleanup( ); /卸載Winsock 2動態(tài)鏈接庫Ws2_32.dllreturn 0; / 以下輸入對方服務(wù)器IP地址(sockaddr_in*)&addr)->sin_family = AF_INET; / Internet 協(xié)議printf(&
12、quot;輸入服務(wù)器地址(x.x.x.x):"); gets(msg);(sockaddr_in*)&addr)->sin_addr.s_addr = inet_addr(msg); / inet_addr()將點分十進制IP地址串轉(zhuǎn)換為u_long類型/ 以下輸入對方服務(wù)器端口號printf("輸入對方服務(wù)器端口號(3000):");gets(msg);if(msg0=0x00) portno=3000; /如果直接回車,就采用默認端口號3000else portno=atoi(msg);(sockaddr_in*)&addr)->s
13、in_port = htons( portno ); / htons():從短整數(shù)的主機字節(jié)順序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序/ 以下與對方服務(wù)器連接/ 在使用面向連接協(xié)議 (TCP)時,必須與服務(wù)器連接成功后,/ 才可通信;另外,若使用無連接的協(xié)議(UDP) ,則可以直/ 接向?qū)Ψ桨l(fā)數(shù)據(jù)、無需連接, 但面向連接收、發(fā)數(shù)據(jù)時用/ 的send()和recv()要換成無連接用的函數(shù) sendto()和recvfrom() printf("與服務(wù)器連接.!");len = sizeof(addr);err = connect( sock,(sockaddr*)&addr,len );
14、 /連接if( err=SOCKET_ERROR ) /若連接失敗printf("連接失敗!");getch();WSACleanup( ); /卸載Winsock 2動態(tài)鏈接庫Ws2_32.dllreturn 0;printf("成功連接到服務(wù)器!n若輸入bye則通信結(jié)束n");over = false; /狀態(tài)設(shè)置為未結(jié)束/ 以下為客戶與服務(wù)器會話交互,直至輸入或收到bye,則/ 退出循環(huán),結(jié)束doprintf("nn本方輸入:");gets(msg);if( strcmp(msg,"bye")=0 ) ove
15、r = true; /輸入"bye"則結(jié)束通信send ( sock,msg,strlen(msg)+1,0); /發(fā)送信息if(over) break; printf("等待服務(wù)器響應(yīng).n");len = recv ( sock,msg,200,0 ); /接收信息,接收緩沖區(qū)長200 msglen=0; /在接收串變量尾添結(jié)束符0 if( strcmp(msg,"bye")=0 ) over = true; /收到"bye"則結(jié)束通信printf("對方回答:");printf(msg);
16、/顯示接收信息while( !over );/以下關(guān)閉套接口,卸載Winsock 2動態(tài)鏈接庫closesocket(sock); /關(guān)閉客戶套接口printf("n會話結(jié)束,按任一鍵返回n");getch();WSACleanup( ); /卸載Winsock 2動態(tài)鏈接庫Ws2_32.dllreturn 0;/-/下述函數(shù)加載初始化Winsock 2 動態(tài)鏈接庫 Ws2_32.dllbool InitSocket() WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 2, 0 ); /Wiinsock2.0版err = WSAStartup( wVersionRequested, &wsaData ); /加載if ( err != 0 ) /沒有Winsock 2 動態(tài)鏈接庫 Ws2_32.dllprintf("
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧酒店品牌建設(shè)-洞察及研究
- 肛門狹窄患者生活質(zhì)量評估-洞察及研究
- 2025年上半年大慶師范學(xué)院招聘輔導(dǎo)員(3人)筆試備考試題及答案詳解(名校卷)
- 2025年蘭州現(xiàn)代職業(yè)學(xué)院單招《物理》通關(guān)考試題庫含完整答案詳解(奪冠)
- 2025中國地質(zhì)大學(xué)(武漢)醫(yī)院招聘2人(湖北)考前自測高頻考點模擬試題含答案詳解
- 2025年首都醫(yī)科大學(xué)宣武醫(yī)院招聘(二)(36人)考前自測高頻考點模擬試題含答案詳解(精練)
- 2025年環(huán)保知識生態(tài)建設(shè)知識競賽-黃河知識競賽歷年參考題庫含答案解析(5套典型考題)
- 2025年政策法規(guī)政治建設(shè)知識競賽-GJB9001C-2017質(zhì)量管理體系知識歷年參考題庫含答案解析(5套典型考題)
- 環(huán)境保護宣傳口號大全
- 2025年安全知識安全生產(chǎn)知識競賽-山西省煤礦安全質(zhì)量標(biāo)準(zhǔn)化知識競賽歷年參考題庫含答案解析(5套典型考題)
- 2023年拉薩市城市管理局公務(wù)員考試《行政職業(yè)能力測驗》歷年真題及詳解
- (正式版)FZ∕T 64111-2024 衛(wèi)生巾(護墊)用非織造布
- 電子版簡易防水合同范本
- 順產(chǎn)一病一品
- 預(yù)制箱梁架設(shè)監(jiān)理實施細則
- JTG-QB-003-2003公路橋涵標(biāo)準(zhǔn)圖鋼筋混凝土蓋板涵
- (高清版)JTG 6310-2022 收費公路聯(lián)網(wǎng)收費技術(shù)標(biāo)準(zhǔn)
- 安全生產(chǎn)費用年度使用分析
- (正式版)HGT 6312-2024 化工園區(qū)競爭力評價導(dǎo)則
- JTT327-2016 公路橋梁伸縮裝置通用技術(shù)條件
- (高清版)TDT 1037-2013 土地整治重大項目可行性研究報告編制規(guī)程
評論
0/150
提交評論