隨筆 重疊I O模型的程式設計框架

2021-06-22 07:34:41 字數 1570 閱讀 3576

#include#include#include#include#include#pragma comment(lib,"ws2_32.lib")

#define default_buflen 512

#define default_port 27015

int _tmain()

//建立監聽套接字

if(seversocket == invalid_socket)

//binding.....

sockaddr_in addrserv;

addrserv.sin_family = af_inet;

addrserv.sin_port = htons(default_port);

addrserv.sin_addr.s_un.s_addr = htonl(inaddr_any);

iresult = bind(seversocket, (const struct sockaddr*)&addrserv,sizeof(sockaddr_in));

if(iresult == socket_error)

iresult = listen(seversocket,somaxconn);

if(iresult == socket_error)

//tcp sever strting...

//建立事件物件,建立重疊結構

eventarray[eventtotal] = wsacreateevent();

zeromemory(buffer,default_buflen);

databuf.len= default_buflen;

databuf.buf = buffer;

eventtotal++;

sockaddr_in addrclient;

int addrclientlen = sizeof(sockaddr_in);

socket acceptsocket;

//迴圈處理客戶端連線請求

while(true)

//接收到新鏈結 ip :inet_ntoa(addrclient.sin_addr);

while(true)

index = wsawaitformultipleevents(eventtotal,eventarray,false,wsa_infinite,false);

if(bytestransferred ==0)

//success in receiving.....

//deal with data....

//重置已授信的事件物件

wsaresetevent(eventarray[index - wsa_wait_event_0]);

//重置flags變數和重疊結構

flags = 0;

zeromemory(buffer,default_buflen);

//重置緩衝區

databuf.len = default_buflen;

databuf.buf = buffer;

} }return 0;

}

非同步通知I O模型和重疊I O模型

理解非同步通知i o模型 理解同步和非同步 同步i o的缺點及非同步方式的解決方案 理解非同步通知i o模型 實現非同步通知i o模型 wsaeventselect函式和通知 include intwsaeventselect socket s,wsaevent heventobject,long ...

Socket模型之重疊I O模型

socket模型之重疊i o模型 這幾天一直在看關於socket程式設計的幾種非同步程式設計,我覺得關於重疊i o模型的一些基本知識,我有必要記下來。在實際的程式設計過程中,我們需要按照下面幾步來編寫我們的socket重疊模型的程式 一 在伺服器端 1 首先初始化socket套接字。由於編寫非同步套...

WinSock重疊IO模型一

winsock的重疊io模型也就是重疊io的乙個特例罷了。其實就是把套接字當成檔案來操作。在重疊io中,如果讀大檔案的時候,為了不在那裡幹等。告訴系統,我先去下兩盤象棋,你讀完了,告訴我一下。下棋時視窗是全屏的,讀完後,彈乙個對話方塊出來告訴我下吧。恩,下棋,真是浪費時間的事,得戒掉啊。winsoc...