我目前正在使用与c#服务器通信的NodeJS应用程序。 NodeJS Web应用程序收到请求并执行Get:
app.get('/api/retrieve', (req, res) => {
let client = new net.Socket();
client.connect(port, host, function() {
console.log("connected");
});
client.on('data', function(data){
console.log(data);
});
client.on('close', function(){
console.log("closed");
});
});
这成功连接到我的c#服务器:
public void StartListening()
{
TcpListener server = new TcpListener(IPAddress.Any, 5000);
server.Start();
while (true)
{
TcpClient client = server.AcceptTcpClient();
NetworkStream networkStream = client.GetStream();
while (client.Connected)
{
try
{
byte[] message = new byte[1024];
networkStream.Read(message, 0, message.Length);
var json = Encoding.Default.GetString(message);
if (json.Contains("GET /api/retrieve"))
{
string jsonData = JsonConvert.SerializeObject(_dal.Retrieve());
byte[] dataBytes = System.Text.Encoding.Unicode.GetBytes(jsonData);
client.GetStream().Write(dataBytes, 0, dataBytes.Length);
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}
在浏览器中调试时,出现以下错误:
代理错误:无法将请求/ api / retrieve从localhost:3000代理到localhost:5000(HPE_INVALID_CONSTANT)。
在Visual Studio中,捕获以下异常:
无法从传输连接读取数据:远程主机强行关闭了现有连接
此外,Visual Studio仅在第二次迭代的行 networkStream.Read(message,0,message.Length); 之后捕获上述异常。
总而言之,.Net应用程序应该将JSON字符串发送回客户端NodeJS。