У меня странные проблемы с именованными каналами в Windows в C #.
Клиент:
NamedPipeClientStream pipeStream = new NamedPipeClientStream("default-PC","mypipe");
pipeStream.Connect();
BinaryWriter sw = new BinaryWriter(pipeStream);
sw.Write((byte[]) data);
Сервер:
NamedPipeServerStream pipeStream = new NamedPipeServerStream("mypipe");
byte[] dataAll = null;
pipeStream.WaitForConnection();
dataAll = new BinaryReader(pipeStream).ReadBytes(1024 * 1000 * 512);
-
Если я использую "." в качестве имени сервера в конструкторе для NamedPipeClientStream все работает правильно, то есть сервер заполняет объект dataAll.
Теперь странно то, что , если я, с другой стороны, ввожу сетевое имя компьютера ("ПК по умолчанию") в NamedPipeClientStream , как показано в приведенном выше коде , тогда никаких данных читается на сервере , поскольку ReadBytes в коде сервера возвращает пустой массив.
Это может быть понятно, я запускал сервер и клиент на двух разных компьютерах, но они оба работают на одной машине. Единственная разница заключается в том, является ли параметр «имя сервера» в NamedPipeClientStream "." или фактическое имя сети (или даже localhost).
Есть идеи?