我正在尝试与node.js中的Windows EXE进行通信。我是Node.js的新手
使用此示例作为起点,但我无法使其工作。
http://juristr.com/blog/2014/03/integrating-node-with-csharp/
看起来可执行文件未启动,因为.connected在运行时为false。 我没有看到可执行文件的启动位置和方式。
EXE代码(从命令行运行它工作正常,返回输入的内容)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LibraryExe
{
class Program
{
static void Main(string[] args)
{
string line;
do
{
line = Console.ReadLine();
try
{
Console.WriteLine("Recieved - " + line);
if (line == "quit")
break;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
} while (line != null);
}
}
}
Node.js代码(似乎没有启动exe,connected = false)
console.log('Hello world');
var spawn = require('child_process').spawn;
var posProc = spawn('C:/path/LibraryExe.exe', []);
posProc.stdout.once('data', function (data) {
// write it back on the response object
console.log('stdOut');
writeToResponse('we got back ' + data);
});
posProc.on('exit', function (code) {
console.log('Closed');
writeToResponse('Library closed');
});
posProc.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
if (posProc.connected)
console.log('connected');
else
console.log('not connected');
posProc.stdin.setEncoding = 'utf-8';
posProc.stdin.write('Hello');
posProc.stdin.write('quit');
console.log('ending');
答案 0 :(得分:4)
您的C#代码正在尝试读取行,但您没有将任何CRLF对写入stdin
流。试试这个:
posProc.stdin.write('Hello\r\n');
posProc.stdin.write('quit\r\n');