通过 Web 套接字网络在 C# 服务器上传输 JSON 字符串数据
Transfer JSON string data on a C# Server via Web Socket Network
目前客户端正在将数据发送到服务器,但在同一台计算机上我希望客户端将此数据发送到另一台计算机上的服务器。有没有办法做到这一点?我附上了发送和接收数据的代码的客户端和服务器端。我希望客户端使用 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
在您的代码中,您有 var socket = new WebSocket("ws://localhost:8181");
尝试将其更改为 var socket = new WebSocket("ws://192.XXX.XXX.XXX");
其中 192.XXX.XXX.XXX
是您要将数据发送到的另一台计算机的 IP 地址。
Localhost
本质上就是自己的电脑。希望这有帮助!
目前客户端正在将数据发送到服务器,但在同一台计算机上我希望客户端将此数据发送到另一台计算机上的服务器。有没有办法做到这一点?我附上了发送和接收数据的代码的客户端和服务器端。我希望客户端使用 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
在您的代码中,您有 var socket = new WebSocket("ws://localhost:8181");
尝试将其更改为 var socket = new WebSocket("ws://192.XXX.XXX.XXX");
其中 192.XXX.XXX.XXX
是您要将数据发送到的另一台计算机的 IP 地址。
Localhost
本质上就是自己的电脑。希望这有帮助!