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...