在Winsock中混合文件句柄和套接字

Mik*_*age 6 sockets posix winsock

我正在将一些代码从BSD套接字移植到Winsock,我不知道如何处理下面的情况.

我的原始应用程序在stdin和网络套接字上运行select:

FD_SET(sock, &fd);
FD_SET(0, &fd);
...
if (select(..., &fd, ... )...)
Run Code Online (Sandbox Code Playgroud)

试图在Winsock中运行它会产生错误10038(WSAENOTSOCK),这是有道理的,因为Linux(stdin)中的文件句柄0不是Windows中的套接字(更确切地说:SOCKET类型).

有没有一种简单的方法将此测试移植到Windows套接字?

Max*_*res 1

Winsock 的 select() 仅适用于套接字。更“Windows-y”的替代方案是在两个句柄上使用异步 I/O,然后使用WaitForMultipleObjects