我正在开发一个 WP8 项目,该项目应该通过 UDP 将数据传输到连接的应用程序(WP8 也是)。我决定使用 DatagramSocket 来与 Windows 8 共享代码。
服务器和客户端应用程序可以相互连接。在客户端连接到服务器后,它会发送一个命令,该命令应该相应地回答服务器。客户端连接和命令发送代码如下:
var stream = await _udpSocket.GetOutputStreamAsync(server, UdpCommunication.Port);
var writer = new DataWriter(stream);
writer.UnicodeEncoding = UnicodeEncoding.Utf8;
uint messageSize = writer.MeasureString(UdpCommunication.ReceiveImageCommand);
writer.WriteUInt32(messageSize);
await writer.StoreAsync();
writer.WriteString(UdpCommunication.ReceiveImageCommand);
await writer.StoreAsync();
await writer.FlushAsync();
因此,我将传输消息大小,然后传输字符串命令名称。到目前为止,一切都很好。
服务器从 DatagramSocket 接收 MessageReceived 事件,我让 DataReader 和 trz 读取 4 bztes。在调用它的过程中,我收到以下异常消息:“操作标识符无效。” (结果-2147020579)
MessageReceived 事件的代码:
DataReader reader = args.GetDataReader();
reader.UnicodeEncoding = UnicodeEncoding.Utf8;
await reader.LoadAsync(4);
uint messageSize = reader.ReadUInt32();
await reader.LoadAsync(messageSize);
string message = reader.ReadString(messageSize);
有没有人知道为什么会抛出这个异常以及如何解决它?我已经完成了 TCP、蓝牙和 NFC,并且都在工作并且有类似的代码。但是UDP让我发疯了......
感谢您的时间和帮助!