是否有任何理由支持本地IPC(使用win-api),有效性wize,resource-wize或其他方式的套接字的命名管道,因为它们的行为非常相似(并且可能由类似的接口进行抽象)在一个可能已经使用套接字用于网络目的的应用程序?
我至少可以命名寻址问题:套接字的端口号与管道的文件名。另外,命名管道(AFAIK)不会警告防火墙(块/解除阻塞对话框),尽管被阻止的应用程序仍然可以通过套接字本地进行通信。还有什么要考虑的?
一些微妙的区别:
如果您没有正常的适配器,则套接字将不适用于本地IPC。 PC没有功能的适配器有多常见?那么当有人试图向笔记型电脑上的一个客户展示我们的软件时,我没有插入网络或电源(因此操作系统禁用网卡以节省电力),而且无线适配器已被禁用(因为笔记本电脑用户没有使用无线)。您可以通过安装一个环回适配器来解决这个问题,但这并不理想。
防火墙软件可能会导致建立TCP / IP连接的问题。这不是本地IPC的问题,但我不相信。 Named pipes can have firewalls too.
由于创建命名管道所需的特权或创建命名管道的新实例,您可能会遇到问题。例如,我使用相同的命名管道运行多个服务器(可能不是一个好主意,但这是测试),而在CreateNamedPipe中有一些失败,因为创建管道的第一个服务器以管理员模式运行(因为它是从Visual Studio以管理员模式),而其余的则是从具有正常UAC级别的命令行启动的。
虽然鲁本斯提到的文章主要是关于网络上的IPC,但它确实表明“本地命名管道以内核模式运行并且速度非常快”。