c++基于tcp和udp的socket通信

c++基于tcp和udp的socket通信

ID:3663465

大?。?67.80 KB

頁數(shù):36頁

時間:2017-11-22

c++基于tcp和udp的socket通信_第1頁
c++基于tcp和udp的socket通信_第2頁
c++基于tcp和udp的socket通信_第3頁
c++基于tcp和udp的socket通信_第4頁
c++基于tcp和udp的socket通信_第5頁
資源描述:

《c++基于tcp和udp的socket通信》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、C++基于TCP和UDP的socket通信2011-08-1812:44?5562人閱讀?評論(5)?收藏?舉報sockettcpc++服務(wù)器streaminternet????TCP和UDP屬于傳輸層協(xié)議。其中TCP提供IP環(huán)境下的數(shù)據(jù)可靠傳輸,它事先為要發(fā)送的數(shù)據(jù)開辟好連接通道(三次握手),然后再進行數(shù)據(jù)發(fā)送;而UDP則不為IP提供可靠性,一般用于實時的視頻流傳輸,像rtp、rtsp就是建立在udp的基礎(chǔ)上的。????首先談?wù)則cpsocket???tcp簡單的三次握手過程如圖,???SYN(SynchronizeSequenceNumbers):同步

2、標(biāo)志 ???ACK(AcknowledgementNumber)????????:確認(rèn)標(biāo)志???圖中可以看出,三次握手的過程是在c的connect()和s的bind()、listen()、accept()函數(shù)中完成的,這樣開辟了相對可靠的連接通道,來傳輸數(shù)據(jù)。UDP的socket編程過程如下圖所示:下面翠花上代碼啦!服務(wù)端:[cpp]?viewplaincopy1.#include???2.#include??//windows?socket的頭文件??3.??4.#pragma?comment(?lib,?"ws

3、2_32.lib"?)//?鏈接Winsock2.h的靜態(tài)庫文件??5.??6.void?main()??7.{??8.????//初始化winsocket??9.????WORD?wVersionRequested;??10.????WSADATA?wsaData;??11.????int?err;??12.??13.????wVersionRequested?=?MAKEWORD(?1,?1?);//第一個參數(shù)為低位字節(jié);第二個參數(shù)為高位字節(jié)??14.??15.????err?=?WSAStartup(?wVersionRequested,?&wsaD

4、ata?);//對winsock?DLL(動態(tài)鏈接庫文件)進行初始化,協(xié)商Winsock的版本支持,并分配必要的資源。??16.????if?(?err?!=?0?)??17.????{??18.????????return;??19.????}??20.??21.????if?(?LOBYTE(?wsaData.wVersion?)?!=?1?

5、

6、HIBYTE(?wsaData.wVersion?)?!=?1?)//LOBYTE()取得16進制數(shù)最低位;HIBYTE()取得16進制數(shù)最高(最左邊)那個字節(jié)的內(nèi)容????????22.????{??23.?

7、???????WSACleanup(?);??24.????????return;??25.????}??26.??1.????SOCKET?sockSrv=socket(AF_INET,SOCK_STREAM,0);//創(chuàng)建socket。AF_INET表示在Internet中通信;SOCK_STREAM表示socket是流套接字,對應(yīng)tcp;0指定網(wǎng)絡(luò)協(xié)議為TCP/IP??2.??3.????SOCKADDR_IN?addrSrv;???4.????addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);?//hto

8、nl用來將主機字節(jié)順序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序(to?network?long)??5.????//INADDR_ANY就是指定地址為0.0.0.0的地址,??6.????//表示不確定地址,或“任意地址”?!??7.????addrSrv.sin_family=AF_INET;???8.????addrSrv.sin_port=htons(4000);//htons用來將主機字節(jié)順序轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)順序(to?network?short)??9.??10.????bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR))

9、;//將本地地址綁定到所創(chuàng)建的socket上,以使在網(wǎng)絡(luò)上標(biāo)識該socket??11.??12.????listen(sockSrv,5);//socket監(jiān)聽,準(zhǔn)備接受連接請求。??13.??14.????SOCKADDR_IN?addrClient;??15.????int?len=sizeof(SOCKADDR);??16.??17.????while(1)??18.????{??19.????????SOCKET?sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);//為一個連接請求提供服務(wù)。a

10、ddrClient包含了發(fā)出連接請求的客戶機IP地址信息;返回的新

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。