下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、. Socket編程報告TCP/IP協(xié)議實(shí)驗(yàn)?zāi)康耐ㄟ^C+來實(shí)現(xiàn)TCP/IP協(xié)議下的Socket編程,掌握TCP協(xié)議的算法實(shí)現(xiàn)。實(shí)驗(yàn)原理客戶端 建立Socket,通過端口號和地址確定目標(biāo)效勞器,使用Connect連接到效勞器,send發(fā)送消息,等待處理,通信完成后調(diào)用CloseSocket關(guān)閉Socket效勞端 建立Socket,聲明自身的端口號和地址并綁定到Socket,使用Listen翻開監(jiān)聽,然后不斷用Accept去查看是否有連接,如果有,捕獲Socket,并通過Recv獲取消息的容,通信完成后調(diào)用CloseSocket關(guān)閉這個對應(yīng)Accept到的Socket,如果不再需要等待任何客戶端連
2、接,則用CloseSocket關(guān)閉掉自身的Socket實(shí)驗(yàn)代碼C+實(shí)現(xiàn)效勞器端代碼如下:#pragma once#include #include #pragma ment (lib,ws2_32.lib)class CServerNetpublic: /初始化效勞器,返回0表示成功int Init(const char* address,int port); /更新數(shù)據(jù)void Run();private:SOCKET m_sock;int CServerNet:Init( const char* address,int port )int rlt = 0; /用于記錄錯誤信息,并輸出int
3、 iErrorMsg; /初始化WinSockWSAData wsaData;iErrorMsg = WSAStartup(MAKEWORD(1,1),&wsaData);if (iErrorMsg != NO_ERROR)/初始化WinSock失敗printf(wsastartup failed with error : %dn,iErrorMsg); rlt = 1;return rlt;/創(chuàng)立效勞端Socketm_sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if (m_sock = INVALID_SOCKET) /創(chuàng)立Socket異常p
4、rintf(socket failed with error : %dn,WSAGetLastError(); rlt = 2;return rlt;/聲明信息sockaddr_in serverAddr;serverAddr.sin_family = AF_INET;serverAddr.sin_port = port;serverAddr.sin_addr.s_addr = inet_addr(address);/綁定iErrorMsg = bind(m_sock,(sockaddr*)&serverAddr,sizeof(serverAddr);if (iErrorMsg 0)/綁定失敗
5、printf(bind failed with error : %dn,iErrorMsg);rlt = 3;return rlt; return rlt;void CServerNet:Run()/公開連接listen(m_sock,5);sockaddr_in tcpAddr;int len = sizeof(sockaddr);SOCKET newSocket;char buf1024;int rval;do/接收信息newSocket = accept(m_sock,(sockaddr*)&tcpAddr,&len); if (newSocket = INVALID_SOCKET)/非
6、可用socket else/新socket連接 printf(new socket connect : %dn,newSocket); /消息處理doprintf(processn);/接收數(shù)據(jù)memset(buf,0,sizeof(buf);rval = recv(newSocket,buf,1024,0);if (rval = SOCKET_ERROR)/這應(yīng)該是個異常,當(dāng)客戶端沒有調(diào)用closeSocket就直接退出游戲的時候,將會進(jìn)入這里printf(recv socket errorn); if (rval = 0)/recv返回0表示正常退出printf(ending connec
7、tion);else/顯示接收到的數(shù)據(jù)printf(recv %sn,buf);while(rval != 0);/關(guān)閉對應(yīng)Accept的socketclosesocket(newSocket); while (1);/關(guān)閉自身的Socketclosesocket(m_sock);int main(int argc, char *argv)CServerNet serverNet;int iRlt = serverNet.Init(,8888);if (iRlt = 0)printf(init ok.n);serverNet.Run();elseprintf(serverNet init fa
8、iled with error : %dn,iRlt);system(pause);客戶端代碼如下:#pragma once#include #include#pragma ment(lib, Ws2_32.lib)class CClientNetpublic:/連接上指定效勞器int Connect(int port,const char* address);/發(fā)送信息int SendMsg(const char* msg,int len);/關(guān)閉void Close();private:SOCKET m_sock;int CClientNet:Connect( int port,const
9、 char* address )int rlt = 0;/用于記錄錯誤信息并輸出int iErrMsg;/啟動WinSockWSAData wsaData;iErrMsg = WSAStartup(MAKEWORD(1,1),&wsaData);if (iErrMsg != NO_ERROR)/有錯誤printf(failed with wsaStartup error : %dn,iErrMsg);rlt = 1;return rlt;/創(chuàng)立Socketm_sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if (m_sock = INVALID_
10、SOCKET)/創(chuàng)立Socket失敗printf(socket failed with error : %dn,WSAGetLastError();rlt = 2;return rlt;/目標(biāo)效勞器數(shù)據(jù)sockaddr_in sockaddrServer;sockaddrServer.sin_family = AF_INET;sockaddrServer.sin_port = port;sockaddrServer.sin_addr.s_addr = inet_addr(address);/連接,sock與目標(biāo)效勞器連接iErrMsg = connect(m_sock,(sockaddr*)&
11、sockaddrServer,sizeof(sockaddrServer);if (iErrMsg 0)printf(connect failed with error : %dn,iErrMsg);rlt = 3;return rlt;return rlt;int CClientNet:SendMsg(const char* msg,int len)int rlt = 0;int iErrMsg = 0;/發(fā)送消息,指定sock發(fā)送消息iErrMsg = send(m_sock,msg,len,0);if (iErrMsg 0)/發(fā)送失敗printf(send msg failed with error : %dn,iErrMsg);rlt = 1;return rlt;return rlt;void CClientNet:Close()closesocket(m_sock);int main()CClientNet client;/連接到即本地,端口號為8888的效勞端printf(Connectn);client.Connect(8888,);/發(fā)送消息printf(send msgn);client.SendMsg(hello0,sizeof(hell
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版數(shù)據(jù)中心保安服務(wù)終止與數(shù)據(jù)安全保護(hù)合同
- 2025年度毛紗買賣合同棉紗原材料供應(yīng)協(xié)議4篇
- 2025年度毛毯產(chǎn)品售后維修服務(wù)合同4篇
- 專項(xiàng)建設(shè)工程咨詢協(xié)作協(xié)議2024版樣本版B版
- 二零二五版保密技術(shù)研發(fā)合作協(xié)議范本6篇
- 二零二四年幼兒園及學(xué)校衛(wèi)生保潔托管協(xié)議3篇
- 2025年度網(wǎng)絡(luò)安全防護(hù)解決方案設(shè)計與實(shí)施服務(wù)合同4篇
- 7 小動物找媽媽 說課稿-2023-2024學(xué)年科學(xué)一年級下冊青島版
- 第六節(jié) 跨學(xué)科實(shí)踐:制作簡易升降機(jī)(說課稿)2024-2025學(xué)年北師大八年級物理下冊
- Unit 1 Hello(說課稿)-2024-2025學(xué)年譯林版(三起)英語三年級上冊
- 寒潮雨雪應(yīng)急預(yù)案范文(2篇)
- DB33T 2570-2023 營商環(huán)境無感監(jiān)測規(guī)范 指標(biāo)體系
- 上海市2024年中考英語試題及答案
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)(2024版)宣傳海報
- 垃圾車駕駛員聘用合同
- 2025年道路運(yùn)輸企業(yè)客運(yùn)駕駛員安全教育培訓(xùn)計劃
- 南京工業(yè)大學(xué)浦江學(xué)院《線性代數(shù)(理工)》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024版機(jī)床維護(hù)保養(yǎng)服務(wù)合同3篇
- 《論拒不執(zhí)行判決、裁定罪“執(zhí)行能力”之認(rèn)定》
- 工程融資分紅合同范例
- 2024國家安全員資格考試題庫加解析答案
評論
0/150
提交評論