通过 Web Socket 网络在 C# 服务器上传输 JSON 字符串数据

Posted

技术标签:

【中文标题】通过 Web Socket 网络在 C# 服务器上传输 JSON 字符串数据【英文标题】:Transfer JSON string data on a C# Server via Web Socket Network 【发布时间】:2018-06-27 17:12:27 【问题描述】:

当前客户端正在将数据发送到服务器,但在同一台计算机上,我希望客户端将此数据发送到另一台计算机上的服务器。有没有办法做到这一点?我已经附加了发送和接收数据的代码的客户端和服务器端。我希望客户端使用 Web 套接字将数据发送到另一台计算机上的 C# 服务器,但它仅在服务器和客户端都在同一台计算机上时才发送数据。

服务器代码:

private static void bodyFrameReader_FrameArrived(object sender, BodyFrameArrivedEventArgs e)
    
        bool dataReceived = false;

        using (BodyFrame bodyFrame = e.FrameReference.AcquireFrame())
        
            if (bodyFrame != null)
            
                if (bodies == null)
                
                    bodies = new Body[bodyFrame.BodyCount];

                
                bodyFrame.GetAndRefreshBodyData(bodies);
                dataReceived = true;
            
        

        if (dataReceived)
        

            foreach (var client in clients)
            

                var users = bodies.Where(s => s.IsTracked.Equals(true)).ToList();

                if (users.Count>0)
                    string json = users.Serialize(_coordinateMapper, _mode);

                    Console.WriteLine("jsonstring: " + json);
                    Console.WriteLine("After body serialization and to send");

                    client.Send(json);
                

            
        

    

下面的客户端代码:

    var socket = new WebSocket("ws://localhost:8181");

    socket.onopen = function (event) 
        label.innerhtml = "Connection open";
    


    socket.onmessage = function (event) 
        if (typeof event.data === "string") 

            var jsonObject = JSON.parse(event.data);

            console.log("Json Arrived");


            for (var i = 0; i < jsonObject.skeletons.length; i++)  

                for (var j = 0; j < jsonObject.skeletons[i].joints.length; j++) 
                    var joint = jsonObject.skeletons[i].joints[j];

                
            

Output

【问题讨论】:

【参考方案1】:

在你的代码中,你有var socket = new WebSocket("ws://localhost:8181");

尝试将其更改为var socket = new WebSocket("ws://192.XXX.XXX.XXX"); 其中192.XXX.XXX.XXX 是您要将数据发送到的另一台计算机的IP 地址。

Localhost 本质上是自己的电脑。希望这有帮助!

【讨论】:

以上是关于通过 Web Socket 网络在 C# 服务器上传输 JSON 字符串数据的主要内容,如果未能解决你的问题,请参考以下文章

WEB JAVA Socket 访问

C#通过Socket在网络间发送和接收图片的演示源码

由路由器连接的电脑如何socket实现网络通信

Web Socket 消息未全部接收

web框架的本质

C#中使用Socket实现简单Web服务器