我不确定如何在使用IOCP时初始化WSAOVERLAPPED
。我根本不认为我需要初始化它,我只将WSAOVERLAPPED.hEvent
设置为NULL(不确定是否有必要)。这段代码是否正确:
// Send data
char buffer[1024];
WSABUF wsaBuf;
wsaBuf.buf = buffer;
wsaBuf.len = 1024;
WSAOVERLAPPED wsaOverlapped;
wsaOverlapped.hEvent = NULL;
WSASend(s, &wsaBuf, 1, NULL, 0, &wsaOverlapped, NULL);
此外,使用OVERLAPPED
时初始化WSARecv()
与初始化WSAOVERLAPPED
相同吗?
答案 0 :(得分:0)
WSAOVERLAPPED
结构受the same rules as the OVERLAPPED
structure的约束,即
在结构用于函数调用之前,应始终将此结构的任何未使用的成员初始化为零。否则,该函数可能会失败并返回ERROR_INVALID_PARAMETER。
答案 1 :(得分:0)
memset(&wsaOverlapped, 0, sizeof(wsaOverlapped));
或者明确地将所有值设置为零。