剛剛把重疊i/o套接字理解了一點,於是在此做個筆記,給出乙個重疊i/o處理單個套接字的程式。
這個程式是tcp的伺服器端程式。該程式只能接收乙個客戶端的連線,迴圈傳送資訊,以及該客戶端退出時伺服器端得到響應。
套接字型檔初始化等**省略了,只包含乙個監聽部分和乙個處理i/o部分的**。如下:
}//開始進行重疊i/o的操作了
while(1)
//如果上面檢查對方沒關閉則顯示接收到的資料
afxmessagebox(wsabuf.buf);
sockaddr_in m_addr;
int len=sizeof(sockaddr);
//s=accept(sl,(sockaddr*)&m_addr,&len);
flag=0;
//重新把重疊結構清理
//再與剛剛被重置的事件物件關聯
lp.hevent=eventarray[index-wsa_wait_event_0];
//再傳送另乙個接收請求,解釋跟第乙個一樣
if(wsarecv(s,&wsabuf,1,&dwread,&flag,&lp,null)==no_error)}}
return 0;}
上面是mfc下實現的單套接字的情況,下面給出在控制台下實現的多套接字情況,其實也不能說是「多」,因為他每處理乙個套接字都要建立乙個執行緒,這顯然是不行的。
套接字i o模型
當套接字建立時,預設情況下是工作在阻塞模式。在阻塞模式下,執行i o的winsock呼叫 如send 和recv 一直到操作完成時才返回。比如呼叫recv 函式,如果對應的緩衝區沒有資料到來。呼叫者將會一直等待下去,直到有資料到達為止。1 阻塞 blocking 模型 對於以下函式呼叫 int ir...
套接字I O模型
在unix下可用的5種i o模型為 柱塞i o模型 非柱塞i o模型 i o復用 select和poll 訊號驅動式i o sigio 非同步i o 柱塞式i o模型 最流行的i o模型是柱塞式i o模型,預設情況下所有套接字都是用柱塞的,以資料報套接字為例子,如圖 程序呼叫recvfrom,其系統...
套接字I O模型之WSAEventSelect
套接字模式和套接字i o模型的區別。套接字模式 阻塞套接字和非阻塞套接字。或者叫同步套接字和非同步套接字。套接字模型 描述如何對套接字的i o行為進行管理。winsock提供的i o模型一共有五種 1 select模型 選擇模型 先看一下下面的這句 intiresult recv s,buffer,...