我已经设置了一个命名管道,以使nodejs应用程序与C#应用程序通信。我能够连接管道,并将数据从nodejs发送到C#,但是相反的方法不起作用。即,当我从C#中写入管道时,data
事件永远不会在nodejs端触发。
nodejs代码:
const net = require('net');
const pipeName = 'mypipe';
var server = net.createServer(function (client) {
client.on('data', function (data) {
console.log("data: " + data.toString());
});
});
server.listen(path.join('\\\\.\\pipe', pipeName), function() {
console.log("connected");
});
C#代码:
var pipe = new NamedPipeClientStream(".", "mypipe", PipeDirection.InOut, PipeOptions.Asynchronous);
pipe.Connect();
if (pipe.IsConnected && pipe.CanWrite) {
var data = new byte[4] {0, 1, 2, 3};
pipe.WriteAsync(data, 0, data.Length);
}
正如我提到的,当我在nodejs中的客户端套接字中编写时,我可以使用ReadyAsync
在C#端正确接收数据。管道客户端是使用PipeDirection.InOut
创建的,因此它应该支持阅读和写作吗?
编辑:也尝试使用BeginWrite
/ EndWrite
失败。
谢谢。