我有一个希望在Windows上使用的应用程序。 我正在Windows下使用AF_UNIX系列。 我希望知道AF_UNIX系列在Windows中可用。 如果不是,那么AF_UNIX可以替代吗?
谢谢
Arpit
我不是100%知道AF_UNIX的用途是什么,但是如果将其用于进程间通信,则Windows可以使用绑定到本地主机的AF_INET套接字来执行高效的进程间通信。 在这种情况下,Windows确实会检测到套接字指向另一个本地进程,并使用LRPC进行数据传输(使用内存映射文件对进程之间的缓冲区进行零拷贝移动)来缩短通讯堆栈。
用两个词:命名管道。
仅使用TCP套接字,它们的行为就非常类似于UNIX套接字。
或者,您可以使用命名管道并使用WaitForMultipleObjects()代替select()或poll()。 Windows命名管道与UNIX中的命名管道不太相似。 Windows命名管道是双向的,因此比UNIX中的命名管道更像AF_UNIX套接字。
更新:
自Windows 10 April 2018更新发布以来,Windows 10现在终于支持此功能:
https://blogs.msdn.microsoft.com/commandline/2017/12/19/af_unix-comes-to-windows/
https://blogs.msdn.microsoft.com/commandline/2018/02/07/windowswsl-interop-with-af_unix/
而不是链接到外部资源,请发布这些资源的摘录来回答问题。
Windows不支持Unix域套接字,也没有提供使用套接字API的不错选择。 您应该在Windows上使用TCP套接字-如果您想要类似于AF_UNIX套接字的内容,请将服务器绑定到localhost。 根据您的问题,TCP的开销可以忽略不计。