Win32命名管道和远程客户端

10

如果我知道计算机A的IP地址,我是否可以从计算机B访问计算机A上的命名管道?如果可以,我需要做什么才能实现它?


你用的是哪个操作系统?你使用的是哪种编程语言? - Brian R. Bondy
Windows和Unix / Linux上的规则是不同的 - 了解哪个规则总是至关重要的。 - Jonathan Leffler
@Taylor Sullivan:是的,Windows 和 Linux 的命名管道有些不同。我在下面提供了 Windows 的信息。 - Brian R. Bondy
3个回答

11

可以通过命名管道在网络上进行通信。您可以像使用UNC路径一样指定管道名称:

\\计算机名\pipe\管道名称

或者通过IP地址:

\\192.168.0.100\pipe\管道名称

您可以为任何局域网中的计算机,或通过VPN连接到您的局域网的任何远程计算机使用这种方法。

您可以使用所有相同的管道Win32 API函数,例如CreateFile。要创建管道,您可以使用CreateNamedPipe

在使用远程管道之前,您必须与远程计算机建立有效的连接。要做到这一点,您可以使用类似WNetUseConnection的API。如果您的计算机在同一个域上,或具有相同的用户名和密码,则根本不需要使用WNetUseConnection。

如果您将程序作为服务运行,则无法使用本地系统帐户访问局域网资源。服务必须使用另一个帐户进行配置。


你不应该使用WNetUseConnection。HANDLE htoken = NULL; LogonUser(L"username", L"domain", L"password", 9, 3, &htoken);int ret = ImpersonateLoggedOnUser(htoken); - Bluebaron
1
有人能解释一下在Linux上如何使用WLAN作为物理连接层的工作原理吗? - fer y

3

命名管道可用于在网络上连接不同计算机上的进程之间提供IPC。请参阅MSDN

如果您使用的是Windows XP SP2、Windows Server 2003 SP1及更高版本,则不要忘记启用命名管道过滤器。请参阅此处


0

注意,Windows下的管道非常糟糕。你需要准确地掌握很多关键细节,否则它们会出现奇怪的故障,而文档也不够完善。

如果可以的话,使用套接字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接