1

好的,我有这个奇怪的问题。我创建了一个使用 TcpClient 和 Reactive Extensions 连接到聊天服务器的 workerrole。当我在模拟器中运行时,代码有效。一开始我认为 Rx 存在一些问题,但现在看起来,我收到的包之间的字节顺序发生了变化。

一点背景资料。我收到的前 4 个字节是标头,前 2 个字节是数据包类型,最后 2 个是剩余长度。要调试问题,我执行以下语句:

var p1 = BitConverter.ToInt16(data, 0);
var p2 = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(data, 0));
var i1 = BitConverter.ToInt16(data, 2);
var i2 = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(data, 2));
Trace.TraceInformation("IsLittleEndian: {0}", BitConverter.IsLittleEndian);
Trace.TraceInformation("Header:({0},{1}),({2},{3})", p1, i1, p2, i2);

第一个数据包如下所示:

IsLittleEndian: True; TraceSource 'WaWorkerHost.exe' event
Header:(0,8704),(0,34); TraceSource 'WaWorkerHost.exe' event

第二对在这里是正确的((0,34),其中 0 = LoginSeed,34 是余数)。

第二个数据包如下所示:

IsLittleEndian: True; TraceSource 'WaWorkerHost.exe' event
Header:(7,152),(1792,-26624); TraceSource 'WaWorkerHost.exe' event

这里第一对突然是正确的,并且没有变化表明这突然是大端。我不禁认为这只是 Azure 中的某种错误,还是我忽略了?请记住模拟器中的这项工作,所以我认为它应该与一些基础设施问题有关。

4

0 回答 0