我想知道如何在 Windows 上使用类似于 Unix Domain Socket 的功能。
行为是:一个进程将成为“服务器”并接收来自其他进程的连接,并且它可以保留和使用来自不同进程的连接,就像 TCP 套接字一样。
IP套接字不是一个解决方案,因为它需要选择一个端口,其他应用程序的进程可能需要所选择的端口,并且开放的端口可能在网络中可见。
我不知道命名管道是否可以接收并保留多个客户端,但我没有看到如何区分不同的客户端。并且它没有提供一种使用 select 之类的方法来等待来自多个连接的数据的方法。
一个老问题提到使用命名管道,但它没有解释如何使用命名管道来获得所需的行为。Windows 中的 AF_UNIX https://stackoverflow.com/questions/3872558/af-unix-in-windows
我没有看到如何获取特定客户端的句柄。
Windows 最近(Windows 10 Insider build 17063)实现了对 AF_UNIX 的支持,因此您可以在未来的 Windows 版本中使用它。
然而,并非所有功能都已实现,以下功能不起作用。
- AF_UNIX 数据报(SOCK_DGRAM)或序列包(SOCK_SEQPACKET)套接字类型。
- 辅助数据:Linux的unix套接字实现支持传递辅助数据,例如传递文件描述符(
SCM_RIGHTS
) 或者
通过套接字的凭据(‘SCM_CREDENTIALS’)。没有支持
用于 Windows unix 套接字实现中的辅助数据。
- 自动绑定功能(有关详细信息,请参阅“sockaddr_un”部分)。
- socketpair:Winsock 2.0 不支持socketpair 套接字API。
Source: https://blogs.msdn.microsoft.com/commandline/2017/12/19/af_unix-comes-to-windows/ https://blogs.msdn.microsoft.com/commandline/2017/12/19/af_unix-comes-to-windows/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)