формат данных в соединении между настольным приложением и приложением UWP - PullRequest
0 голосов
/ 15 января 2019

я создаю клиент-серверный сервис между настольным приложением (c #) и HoloLens (UWP).Сервер работает на HoloLens, в то время как PC App является клиентом.

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

Хотя сервер UWP использует Windows.Netowrking и Windows.Networking.Sockets, кажется, получает и отправляет данные в виде строк.Приложение для ПК использует System.Net и System.Net.Sockets и перед отправкой строки требует преобразования строки в байтовый формат.

Может ли это быть проблемой?Я не смог найти много документации для Windows.Networking, и я не знаю, все ли данные перед отправкой преобразуются в байты.

1 Ответ

0 голосов
/ 17 января 2019

Я не знаю, все ли данные перед отправкой преобразуются в байты в любом случае

Когда вы вызываете Write () или Send () с помощью сетевого API, вы обычно получаете опциючтобы обеспечить много типов данных, будь то строка или байт [] или целое число - но это не влияет на физическую передачу данных.

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

Поскольку другой конец сможет обрабатывать эти данные как байты [], или int [], или строку.

Распространенная проблема, с которой вы, возможно, захотите разобраться, это endianness или проверка того, как вы изменяете свою строку в байт [].то есть проблемы, когда вы переключаетесь между строками, или разные байты [] и т. д. неправильно.Вы можете прочитать в System.Text.Encoding , чтобы проверить, правильно ли вы перемещаетесь между байтом [] и строкой.

//Turn a string into a byte[], for your PC app to send
byte[] byteData = System.Text.Encoding.ASCII.GetBytes("Message");
//On the other end read that byte[] into ASCII characters
char[] charsData = System.Text.Encoding.ASCII.GetChars(byteData);
//Check you read something, and turn those chars into a string.
if (charsData != null && charsData.Length > 0)
    string stringData = new string(chars);
...