我的应用程序可以使用WSASend和WSARecv同时从客户端发送和接收数据。那么,如何区分哪个操作在IOCP处理线程中完成(发送或接收)?
BOOL bReturn = GetQueuedCompletionStatus(srv.m_hCompPort, &dwBytesTransfered, (LPDWORD)&lpContext, &pOverlapped, INFINITE);
我认为我可以为此目的使用OVERLAPED结构,但我不能。有什么想法吗?
谢谢!
答案 0 :(得分:0)
解决方案非常简单:
struct iOverlaped : public OVERLAPPED{
enum Type {
Send,
Receive
};
iOverlaped(Type type_ ) {
ZeroMemory(this, sizeof(iOverlaped));
type = type_;
}
Type type;
};
对于每个连接,我们必须创建两个重叠的实例(每个操作类型一个)...