使用命名管道的Node.js和C#.Net之间的通信:未触发“数据”事件

时间:2018-09-27 17:06:35

标签: c# node.js named-pipes

我已经设置了一个命名管道,以使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失败。

谢谢。

0 个答案:

没有答案