同网络远程服务器下Named Pipe Wrapper客户端连接语法问询
远程Named Pipe Wrapper连接的正确语法
嘿,你的那个写法不太对哦,我来给你梳理清楚正确的姿势:
首先,Windows系统的远程命名管道访问有固定的格式要求,Named Pipe Wrapper作为封装库完全遵循这个规则。你写的//192.168.100.2//named_pipe_test_server有两个问题:
- 用了正斜杠
/,Windows路径里应该用反斜杠\; - 缺少了命名管道必须的
pipe路径段——所有Windows命名管道都挂载在\pipe这个虚拟目录下。
正确的写法有两种:
- 使用逐字字符串(@前缀),避免反斜杠转义,可读性更好:
client = new NamedPipeClient<string>(@"\\192.168.100.2\pipe\named_pipe_test_server");
- 如果不用逐字字符串,需要把每个反斜杠转义成两个(因为C#里反斜杠是转义字符):
client = new NamedPipeClient<string>("\\\\192.168.100.2\\pipe\\named_pipe_test_server");
额外要注意的几点:
- 确保远程服务器的防火墙没有拦截命名管道通信,两台机器能互相ping通;
- 服务器端的
NamedPipeServer实例不需要修改代码(只要管道名一致),但要保证运行服务器的账户有允许远程访问命名管道的权限; - 如果用机器名代替IP也是可以的,比如
@"\\RemotePCName\pipe\named_pipe_test_server",前提是局域网内能解析到这个机器名。
内容的提问来源于stack exchange,提问作者Vdlight
相关产品推荐
相关产品推荐

