如何在使用IOCP时初始化WSAOVERLAPPED?

时间:2015-03-05 00:10:58

标签: c++ sockets winapi network-programming iocp

我不确定如何在使用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相同吗?

2 个答案:

答案 0 :(得分:0)

WSAOVERLAPPED结构受the same rules as the OVERLAPPED structure的约束,即

  

在结构用于函数调用之前,应始终将此结构的任何未使用的成员初始化为零。否则,该函数可能会失败并返回ERROR_INVALID_PARAMETER。

答案 1 :(得分:0)

   memset(&wsaOverlapped, 0, sizeof(wsaOverlapped));

或者明确地将所有值设置为零。

相关问题