WSASocket() 应该与 IOCP 一起使用吗?
Should WSASocket() be used with IOCP?
我知道在创建 IOCP 应用程序时建议使用 WSAAccept()
而不是 accept()
。但是我不确定 WSASocket()
是否属于 Overlapped I/O 函数,或者它只是另一个 Winsock 函数?
我一直认为您可以通过查看 socket()
and WSASocket()
的 MSDN 文档来回答这个问题,特别是您无法创建可与重叠 I/O 一起使用的套接字(并且IOCPs) 使用 socket()
as only WSASocket()
允许您在创建套接字时指定 WSA_FLAG_OVERLAPPED
标志。但这是不正确的,因为 socket()
创建的套接字设置了 WSA_FLAG_OVERLAPPED
。
但是,一般来说,Windows 中的 berkeley/POSIX 套接字函数只是为了方便那些想要使用 API 编程的人。几乎没有理由使用它们,应该首选原生 Windows APIs。
我知道在创建 IOCP 应用程序时建议使用 WSAAccept()
而不是 accept()
。但是我不确定 WSASocket()
是否属于 Overlapped I/O 函数,或者它只是另一个 Winsock 函数?
我一直认为您可以通过查看 socket()
and WSASocket()
的 MSDN 文档来回答这个问题,特别是您无法创建可与重叠 I/O 一起使用的套接字(并且IOCPs) 使用 socket()
as only WSASocket()
允许您在创建套接字时指定 WSA_FLAG_OVERLAPPED
标志。但这是不正确的,因为 socket()
创建的套接字设置了 WSA_FLAG_OVERLAPPED
。
但是,一般来说,Windows 中的 berkeley/POSIX 套接字函数只是为了方便那些想要使用 API 编程的人。几乎没有理由使用它们,应该首选原生 Windows APIs。