我可以通过计算机B的计算机A的IP地址访问计算机A上的命名pipe道吗? 如果是这样,我需要做些什么才能做到这一点?
是的,您可以通过命名管道通过网络进行通信。 您可以像UNC路径一样指定管道名称:
\\computername\pipe\pipename
或通过IP
\\192.168.0.100\pipe\pipename
您可以为任何LAN机器或通过VPN连接到您的LAN的任何远程机器执行此操作。
您使用所有相同的管道Win32 API函数,如CreateFile 。 要创建使用CreateNamedPipe的管道。
在使用远程管道之前,您必须拥有到远程计算机的有效连接。 要做到这一点,你会使用像WNetUseConnection API。 或者,如果您的计算机位于相同的域中,或者具有相同的u / p,则根本不需要使用WNetUseConnection。
如果您将程序作为服务运行,则无法使用本地系统帐户访问LAN资源。 该服务将不得不与另一个帐户配置。
命名管道可以用来在网络中不同计算机上的进程之间提供IPC。 请参阅MSDN 。
如果您使用的是Windows XP SP2,Windows server 2003 SP1和更高版本,请不要忘记启用命名管道筛选。 请参阅这里 。
请注意,在Windows下的管道是可怕的。 有很多关键的细节你需要得到完全正确的,或者他们奇怪的失败,文件不是抓起来。
如果可以,请使用套接字。