【发布时间】:2016-11-29 13:20:06
【问题描述】:
我创建了一个 UDP 客户端,它运行良好。数据以正确的格式返回(通过 wireshark 验证)。问题是我从 streamreader 收到的格式不是我所期望的。
这里是代码
private async void OnMessageReceived(DatagramSocket sender,
DatagramSocketMessageReceivedEventArgs args)
{
Debug.WriteLine("message recv");
var result = args.GetDataStream();
var resultStream = result.AsStreamForRead(1024);
using (var reader = new StreamReader(resultStream))
{
string text = await reader.ReadToEndAsync();
Debug.WriteLine(text);
}
}
这是wireshark数据
00 00 ff ff
这是我运行代码时生成的文本
"?\0\u0002\0?\0\0d\0\0\u0001\u0001\0\0??"
我假设它是格式问题。
【问题讨论】:
-
非常不清楚您希望从
00 00 ff ff字节作为字符串中得到什么。考虑提供minimal reproducible example - 您以字节数组形式接收的内联数据,并显示预期输出以及您获得的内容。 -
从您的预期结果看来,您的数据是二进制流。为什么选择 StreamReader?
-
我想将 00 00 ff ff 视为一个字符串。那是我的数据
-
如果不是Streamreader,我应该用什么?
-
@user3363744:作为字符串...使用什么编码? UTF-8、UTF-16、UTF-32 都会以不同的方式解释这 4 个字节(字符串数据还有许多其他编码)。