Как различать типы объектов через байтовый массив - PullRequest
1 голос
/ 11 марта 2019

В настоящее время я занимаюсь разработкой приложения для удаленного рабочего стола и наткнулся на одну серьезную проблему.Имейте в виду, что я использую простую библиотеку TCP, которая отправляет данные на сервер следующим образом: MainClient.Send(Byte[] Data);

Проблема, с которой я столкнулся, заключается в том, что мне нужно иметь возможность различать данные, например, прикреплять заголовок кданные, чтобы сервер знал, что с ним делать.Текущее решение, которое у меня есть, - это включение и выключение bool в зависимости от того, транслирует ли клиент экран, чтобы сервер знал, что делать с данными, которые он получает.(Хотя bool имеет значение true, любые полученные данные автоматически преобразуются в изображение.)

Как я могу сделать это в чувствительном байтовом массиве, который переносит изображение, и тогда сервер сможет прочитать заголовокскажи что это.(Так что я могу одновременно выполнять несколько других функций с клиентом)

1 Ответ

0 голосов
/ 11 марта 2019

Если я правильно понимаю ваш вопрос, вы пытаетесь разграничить, какой тип данных был получен.

Этого легко достичь, добавив «байт заголовка» к байту для отправки, и проанализируйте его.на стороне сервера.

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;
}

Это только основная идея, пожалуйста, измените код, чтобы он соответствовал вашемунеобходимо!

...