INFO: WSA_FLAG_OVERLAPPED Is Needed for Non-Blocking Sockets (179942)
The information in this article applies to:
- Microsoft Platform Software Development Kit (SDK) 1.0, when used with:
- the operating system: Microsoft Windows NT
- the operating system: Microsoft Windows 2000
This article was previously published under Q179942 SUMMARY
The Winsock 2 socket flag WSA_FLAG_OVERLAPPED needs to be set if the socket
will be used in non-blocking mode when running on Windows NT 4.0. Failure
to set this flag can result in subsequent Winsock API failure. For example,
on Windows NT 4.0, WSAConnect fails with error code 10022, WSAEINVAL if the
socket was created without this flag and the socket is placed into non-
blocking mode prior to it being called.
MORE INFORMATION
A socket must be created with its overlapped I/O attribute set if
overlapped I/O is to be performed using the socket. This can be done either
by creating the socket with the WSASocket API with the WSA_FLAG_OVERLAPPED,
or by creating the socket via the socket API. However, if the socket will
be set to non-blocking mode (on Windows NT 4.0), the socket must also be
created with its overlapped attribute set, even if no overlapped I/O will
be performed with the socket. A socket is placed into non-blocking mode
when either the WSAEventSelect or WSAAsyncSelect APIs are called or if the
FIONBIO command is used in the ioctlsocket API.
This behavior differs from Windows 95 with Winsock 2 installed, where the
WSA_FLAG_OVERLAPPED flag does not need to be set if the socket will be
placed into non-blocking mode. Additionally, on both Windows NT 4.0 and
Windows 95 with Winsock 2, if the socket is not set to non-blocking the
WSA_FLAG_OVERLAPPED does not need to be set.
To achieve cross-platform portability between Windows 95 and Windows NT
4.0, you are strongly encouraged to employ the WSA_FLAG_OVERLAPPED flag
when using the WSASocket API, even if no overlapped I/O operations are to
be performed with the socket.
Modification Type: | Minor | Last Reviewed: | 7/11/2005 |
---|
Keywords: | kbAPI kbinfo kbnetwork kbWinsock KB179942 |
---|
|