GetQueuedCompletionStatus后不同返回值的通用处理流程
2013-07-24 14:16
555 查看
v_bSuccess = GetQueuedCompletionStatus(
m_stchComplePort,
&v_dwNumberBytes,
(LPDWORD)&v_dwNetKey,
(LPOVERLAPPED*)&v_pOverLapped,
INFINITE
);
1、Server投递的Accept操作,AcceptEx里面的RecvDataLen参数不为0的话,表示等待客户端连接发送数据包才返回
// 如果投递成功,进入相应的操作
if(v_bSuccess && dwNumberBytes>0)
{
// 进行相应的操作
// to do....
// 重新投递一个新的accept
}
else
{
// 如果是返回失败,一般就是该Server Socket出问题了,直接断开服务端Socket连接
if(!v_bSuccess)
{
closesocket(sListenSocket);
}
else
{
// 客户端关闭了套接字,回收该句柄资源
closesocket(sCltSocket);
}
}
2、Server投递的Accept操作,AcceptEx的RecvDataLen参数为0,即接收到客户端连接立即返回
if(v_bSuccess)
{
// 进行相应的操作
// to do....
// 重新投递一个新的accept
}
else
{
// 如果是返回失败,一般就是该Server Socket出问题了,直接断开服务端Socket连接
}
3、Server投递Recv\Send返回
if(!v_bSuccess)
{
// 如果是返回失败,一般就是该Server Socket出问题了,直接断开服务端Socket连接
}
else
{
// 客户端断开连接
if(0==v_dwNumberBytes)
{
// 客户端断开连接,回收该句柄资源
closesocket(sCltSocket);
}
else
{
// 进入相应的处理
}
}
4、Client投递Recv/Send操作返回
if(!v_bSuccess)
{
// 如果是返回失败,一般就是该Server Socket出问题了,直接断开服务端Socket连接
}
else
{
// 客户端断开连接
if(0==v_dwNumberBytes)
{
// 远程服务端断开连接,回收该句柄资源
closesocket(sCltSocket);
}
else
{
// 进入相应的处理
}
}
m_stchComplePort,
&v_dwNumberBytes,
(LPDWORD)&v_dwNetKey,
(LPOVERLAPPED*)&v_pOverLapped,
INFINITE
);
1、Server投递的Accept操作,AcceptEx里面的RecvDataLen参数不为0的话,表示等待客户端连接发送数据包才返回
// 如果投递成功,进入相应的操作
if(v_bSuccess && dwNumberBytes>0)
{
// 进行相应的操作
// to do....
// 重新投递一个新的accept
}
else
{
// 如果是返回失败,一般就是该Server Socket出问题了,直接断开服务端Socket连接
if(!v_bSuccess)
{
closesocket(sListenSocket);
}
else
{
// 客户端关闭了套接字,回收该句柄资源
closesocket(sCltSocket);
}
}
2、Server投递的Accept操作,AcceptEx的RecvDataLen参数为0,即接收到客户端连接立即返回
if(v_bSuccess)
{
// 进行相应的操作
// to do....
// 重新投递一个新的accept
}
else
{
// 如果是返回失败,一般就是该Server Socket出问题了,直接断开服务端Socket连接
}
3、Server投递Recv\Send返回
if(!v_bSuccess)
{
// 如果是返回失败,一般就是该Server Socket出问题了,直接断开服务端Socket连接
}
else
{
// 客户端断开连接
if(0==v_dwNumberBytes)
{
// 客户端断开连接,回收该句柄资源
closesocket(sCltSocket);
}
else
{
// 进入相应的处理
}
}
4、Client投递Recv/Send操作返回
if(!v_bSuccess)
{
// 如果是返回失败,一般就是该Server Socket出问题了,直接断开服务端Socket连接
}
else
{
// 客户端断开连接
if(0==v_dwNumberBytes)
{
// 远程服务端断开连接,回收该句柄资源
closesocket(sCltSocket);
}
else
{
// 进入相应的处理
}
}
相关文章推荐
- GetQueuedCompletionStatus返回值的处理顺序
- GetQueuedCompletionStatus的返回值
- GetQueuedCompletionStatus的返回值
- GetQueuedCompletionStatus的返回值
- GetQueuedCompletionStatus的返回值
- GetQueuedCompletionStatus的返回值(本人翻译自msdn)
- 完成端口GetQueuedCompletionStatus返回值的问题
- GetQueuedCompletionStatus的返回值
- GetQueuedCompletionStatus的返回值(翻译自msdn)
- GetQueuedCompletionStatus的返回值
- 完成端口 GetQueuedCompletionStatus 异常处理
- 关于GetQueuedCompletionStatus的返回值
- 完成端口GetQueuedCompletionStatus()返回错误,怎样获得真正的错误代码
- PostQueuedCompletionStatus 与 GetQueuedCompletionStatus
- GetQueuedCompletionStatus
- GetQueuedCompletionStatus函数
- GetQueuedCompletionStatus、PostQueuedCompletionStatus的使用
- IOCP GetQueuedCompletionStatus 返回值处理
- PostQueuedCompletionStatus 与 GetQueuedCompletionStatus
- Windows API一日一练(60)CreateIoCompletionPort和GetQueuedCompletionStatus函数