我需要确定我的代码没有创建的句柄GetFileType()==FILE_TYPE_PIPE
,是否为套接字.似乎没有这方面的API.
我尝试了以下内容.一般的想法是使用特定于套接字的函数并将失败视为非套接字.
getsockopt()
- 这是我的第一次尝试.不幸的是,当同一(非套接字)句柄上的许多线程调用时,它似乎挂起.
WSAEnumNetworkEvents()
- 这就是Gnulib所做的,但如果手柄是套接字会产生不良副作用.
getpeername()
- 这就是cygwin所做的,但是对于一些套接字也会失败.猜测错误是否意味着套接字似乎不可靠且未来安全.
我不介意解决方案是否仅适用于某些版本的Windows,例如Vista,在一般情况下,我总是可以回到其他方法.