網路程式設計小結

2021-08-31 10:05:20 字數 2808 閱讀 9832

memset(&_mdataofcfg, 0, sizeof(_mdataofcfg));
const char configfile= "..\\debug\\config.cfg";
htons() 把unsigned short型別從主機序轉換到網路序;

htonl() 把unsigned long型別從主機序轉換到網路序;

ntohs() 把unsigned short型別從網路序轉換到主機序;

ntohl() 把unsigned long型別從網路序轉換到主機序。

(1).伺服器根據位址型別(ipv4,ipv6)、socket型別、協議建立socket

(2).伺服器為socket繫結ip位址和埠號

(3).伺服器socket監聽埠號請求,隨時準備接收客戶端發來的連線,這時候伺服器的socket並沒有被開啟

(4).客戶端建立socket

(5).客戶端開啟socket,根據伺服器ip位址和埠號試圖連線伺服器socket

(6).伺服器socket接收到客戶端socket請求,被動開啟,開始接收客戶端請求,直到客戶端返回連線資訊。這時候socket進入阻塞狀態,所謂阻塞即accept()方法一直到客戶端返回連線資訊後才返回,開始接收下乙個客戶端諒解請求,客戶端連線成功,向伺服器傳送連線狀態資訊,伺服器accept方法返回,連線成功

(7).客戶端向socket寫入資訊

(8).伺服器讀取資訊

(9).客戶端關閉

(10).伺服器端關閉

(1s)wsastartup(makeword(2, 2), &wsadata)

(2s)服務端

_sockets = socket(af_inet,sock_stream,ipproto_tcp)

(3s)服務端bind(_sockets,(struct sockaddr *)&_addr【服務端位址】, sizeof(_addr))

(1c)客戶端

_msocketc = socket(af_inet,sock_stream,ipproto_tcp)

(4s)服務端

_socketc= accept(_sockets,(struct sockaddr *)&_clientaddr1【獲得客戶端位址】, &_adrlen)【用作處理多客戶端併發時可迴圈】

(2c)客戶端 connect(_msocketc,(struct sockaddr *)&_addr【服務端位址】, sizeof(_addr))

(3c)客戶端 send(_msocketc,(char*)&_mcontroltoprisse,sizeof(_mcontroltoprisse),0)       【迴圈】

(5s)服務端 recv(_socketc ,(char*)&_mcontroltoprisse,sizeof(_mcontroltoprisse),0)          【迴圈】

(1s)wsastartup(makeword(2, 2), &wsadata)

(1c)客戶端

_msocketc = socket(af_inet,sock_stream,ipproto_tcp)

(2c)客戶端 sendto(_msocketc,(char*)&_mcontroltoprisse,sizeof(_mcontroltoprisse),0,(sockaddr*)&_addr【服務端位址】, sizeof(_addr))       【迴圈】

(2s)服務端

_sockets = socket(af_inet,sock_stream,ipproto_tcp)

(3s)服務端bind(_sockets,(struct sockaddr *)&_addr【服務端位址】, sizeof(_addr))

(4s)服務端 recvfrom(_socketc ,(char*)&_mcontroltoprisse,sizeof(_mcontroltoprisse),0,(sockaddr*)&_addr【服務端位址】, sizeof(_addr))          【迴圈】

#include dword winapi _threadr(lpvoid lpparameter)

//start thread

dword thread_hnd;

handle threadr = createthread(null,0,_threadr,null,0,&thread_hnd);

//close thread

closehandle(threadr);

網路程式設計小結

做了乙個 tcp 和udp的服務端,但是現在測試老有問題,就是udp總會有那麼幾次超時,原因還沒找到,不過先總結一下網路的程式設計。首先預設的狀態下,recvfrom和recv都是阻塞的狀態,也就是沒接收到會一直阻塞,知道返回,但是可以通過select設定超時 timeval twait twait...

關於網路程式設計select小結

描述符讀就緒情況 1 套接字的讀緩衝大於低位標記so recvnowat 預設為1 2 監聽套接字監聽到新的連線 3 套接字接收到了fin訊號,read 0.4 套接字出錯,read 1 描述符寫就緒情況 1 套接字的寫緩衝大於低位標記so sendnowat 預設為2048 2 套接字接收到了fi...

網路程式設計(自用小結筆記)

一 實現網路通訊需要解決的兩個問題 二 網路通訊的兩個要素 三 通訊要素一 ip和埠號 1.ip的理解 四 通訊要素二 網路通訊協議 1.分類模型 2.tcp 和udp的區別 3.tcp三次握手和四次揮手 示例1 客戶端傳送資訊給服務端,服務端將資料顯示在控制台上 客戶端 test public v...