c# - 网络上的命名管道:帐户限制
问题描述
我目前正在创建一个小型客户端 - 服务器应用程序,其中服务器位于同一网络中的一台机器上,客户端位于同一网络上的第二台(不同)机器上。
因此,我创建了一个如下所示的服务器代码:
PipeSecurity pipeSecurity = new PipeSecurity();
pipeSecurity.AddAccessRule(new PipeAccessRule("Everyone", PipeAccessRights.ReadWrite | PipeAccessRights.CreateNewInstance, AccessControlType.Allow));
var server = new NamedPipeServerStream("PipesOfPiece", PipeDirection.InOut, NamedPipeServerStream.MaxAllowedServerInstances, PipeTransmissionMode.Message, PipeOptions.Asynchronous, 0, 0, pipeSecurity);
server.WaitForConnection();
StreamReader reader = new StreamReader(server);
StreamWriter writer = new StreamWriter(server);
while (true) {
var line = reader.ReadLine();
writer.WriteLine(String.Join("", line.Reverse()));
writer.Flush();
}
还有一个如下所示的客户端应用程序:
var client = new NamedPipeClientStream("DESKTOP-K7TUEGS", "PipesOfPiece");
client.Connect();
StreamReader reader = new StreamReader(client);
StreamWriter writer = new StreamWriter(client);
while (true) {
string input = Console.ReadLine();
if (String.IsNullOrEmpty(input)) break;
writer.WriteLine(input);
writer.Flush();
Console.WriteLine(reader.ReadLine());
}
在本地测试这两个应用程序时,它们可以正常工作,但是如果我在同一网络中的两台不同机器上尝试它,客户端会收到以下错误:
Unhandled Exception: System.IO.IOException: Account restrictions are preventing this user from signing in. For example: blank passwords aren't allowed, sign-in times are limited, or a policy restriction has been enforced.
命名管道是否仅在两台机器都在域中时才起作用?我当前的设置是一个没有 Windows 域的 LAN,只有一个路由器。或者我如何设置每个人都能连接的管道服务器?
编辑:我还尝试禁用防火墙,但这并没有改变这种情况。
解决方案
推荐阅读
- java - 正则表达式:带分隔线模式的多行
- java - 如何创建大小为 BigInteger 的数组或数组列表。我需要一个真正的大数组
- windows - 在 SSD 上安装 Windows 10 错误:“我们无法创建新分区...”
- python - 在 Pandas 中结合屏蔽和索引
- javascript - 反应 + Firebase + Python
- php - 如何按照用户 ID 获取 PHP 中 MySQL 列的总和?
- python - 如何使用for循环遍历列表中的这个嵌套字典
- c++ - 你如何一步一步地正确解释这段代码?(编程新手)
- java - 如何在java中输入数组列表并输出总和
- javascript - 样式化组件嵌套组件错误