您的位置:首页 > 理论基础 > 计算机网络

网络编程的4种IO模型

2012-11-28 19:29 316 查看
select
FD_ZERO初始化
FD_SET将socket加进去
select轮询
当socket的事件发生时,fd_set里面有相关的socket,如果没有socket有事件发生,select返回0
FD_ISSET检测,socket是否还在fd_set里,是的话,表示这个socket有事件发生

WSAAsyncSelect
WSAAsyncSelect将socket与对应的窗口过程绑定,并指定这个socket对哪些事件感兴趣
WSAGETSELECTERROR(lParam)得到错误
WSAGETSELECTEVENT(lParam)得到是哪个事件
wParam为socket

WSAEventSelect
WSACreateEvent创建一个事件
WSAEventSelect将socket与事件绑定
WSAWaitForMultipleEvents等待这些事件
WSAEnumNetworkEvents得到发生的通知FD_ACCEPT之类

WSAGetOverlappedResult
typedef struct _WSAOVERLAPPED {
DWORD Internal;
DWORD InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
WSAEVENT hEvent;
} WSAOVERLAPPED, *LPWSAOVERLAPPED;

WSAOVERLAPPED中的hEvent
WSACreateEvent创建一个事件
用WSARecv带WSAOVERLAPPED结构
用WSAWaitForMultipleEvents等待这些事件
用WSAGetOverlappedResult得到WSAOVERLAPPED结构
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: