WSA_FLAG_OVERLAPPED Is Needed for Non-Blocking Sockets

SUMMARYThe 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 INFORMATIONA 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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值