节点客户端和C#服务器之间的通信

时间:2019-06-05 00:17:29

标签: c# node.js

我目前正在使用与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。

0 个答案:

没有答案