如何通过字节数组区分对象类型

时间:2019-03-11 02:27:36

标签: c# arrays networking byte

我目前正在开发一个远程桌面应用程序,并且偶然发现了一个主要问题。请记住,我正在使用一个简单的TCP库,该库将数据发送到服务器,如下所示:MainClient.Send(Byte[] Data);

我遇到的问题是我需要能够区分数据,例如将标头附加到数据,以便服务器知道如何处理它。我目前拥有的解决方案是根据客户端是否在流式传输屏幕来打开和关闭bool,以便服务器知道如何处理接收到的数据。 (虽然布尔值是正确的,但是接收到的所有数据都会自动转换为图像。)

我该如何在承载图像的敏感字节数组中执行此操作,然后让服务器能够读取标头以说明其含义。 (因此我可以同时与客户端执行其他多项功能)

1 个答案:

答案 0 :(得分:0)

如果我理解您的问题是对的,则您正在尝试区分收到的数据类型。

可以通过将“标头字节”添加到要发送的字节并在服务器端对其进行分析来轻松实现。

List<Byte> bytesToBeSend = new List<Byte>();

bytesToBeSend.Add(0);    //Assuming 0 is the image type.
bytesToBeSend.AddRange(dataToBeSend);
MainClient.Send(bytesToBeSend.ToArray());

接收数据后,请执行以下操作:

Byte[] bytesToBeProcess = bytes.Skip(1).ToArray();

switch(bytes[0])
{
    case 0:    //Image type.
        //Do whatever you want with bytesToBeProcess.
        break;
    case 1:    //Text type, for example, and so on.
        //...
        break;
    default:
        //...
        break;
}

这只是基本概念,请更改代码以适合您的需求!