im在桌面应用程序(c#)和HoloLens(UWP)之间创建客户端服务器服务。 服务器在HoloLens上运行,而PC App是客户端。
我在传输数据时遇到一些问题,这是我的问题。
虽然UWP服务器使用Windows.Netowrking和Windows.Networking.Sockets,但它似乎以字符串形式接收和发送数据。 PC App使用System.Net和System.Net.Sockets,并且在发送字符串之前,它需要将字符串转换为字节格式。
这可能是个问题吗?我找不到Windows.Networking的大量文档,而且我也不知道发送之前的数据是否仍转换为字节。
答案 0 :(得分:0)
我不知道发送前的数据是否仍转换为字节
使用网络API调用Write()或Send()时,通常可以选择提供多种数据类型,可以是字符串,字节[]或int,但这并不影响数据是物理传输的。
内部将以高效的方式(以二进制流的形式)对传输进行“序列化”,但是您无需关心这些细节。
因为另一端将能够以byte []或int []或字符串的形式处理该数据。
您可能要研究的常见问题是endianness,或者检查如何将字符串更改为字节[]。例如,问题是您在字符串之间或在不同的byte []等之间错误地进行了更改。您可以读入System.Text.Encoding来检查您是否在byte []和字符串之间正确移动。
//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);