gpt4 book ai didi

winapi - 如何区分 Win32 套接字句柄和其他管道句柄?

转载 作者:行者123 更新时间:2023-12-04 21:01:07 24 4
gpt4 key购买 nike

我需要确定我的代码未创建的句柄是否为 GetFileType()==FILE_TYPE_PIPE , 是否是套接字。似乎没有用于此的 API。

我尝试了以下方法。总体思路是使用特定于套接字的函数,并将失败视为非套接字。

  • getsockopt() ——这是我的第一次尝试。不幸的是,当被同一个(非套接字)句柄上的许多线程调用时,它似乎挂起。
  • WSAEnumNetworkEvents() -- 这就是 Gnulib 所做的,但如果句柄是套接字,则会产生不良的副作用。
  • getpeername() - 这就是 cygwin 所做的,但对于某些套接字也会失败。猜测错误是否意味着套接字性似乎并不可靠且 future 安全。

  • 我不介意该解决方案是否仅适用于某些版本的 Windows,例如Vista,在一般情况下,我总是可以使用其他方法。

    最佳答案

    我在想也许你可以尝试调用 GetNamedPipeInfo() 在你的 Handlebars 上。如果调用成功就知道句柄是管道句柄,否则一定是套接字。

    关于winapi - 如何区分 Win32 套接字句柄和其他管道句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531874/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com