首页 > 解决方案 > 节点客户端和 C# 服务器之间的通信

问题描述

我目前正在开发一个与 ac# 服务器通信的 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。

标签: c#node.js

解决方案


推荐阅读