【发布时间】:2016-06-03 19:30:33
【问题描述】:
我正在尝试使用 UWP 中的流来通过网络将数据从一台机器发送到另一台机器。
在发送机器上,我创建了一个 DatagramSocket 并将我要发送的数据序列化为字节并将其写入输出流。
在接收机器上,我创建另一个 DatagramSocket 并处理 MessageReceived 事件以收集发送的数据。
这似乎是有效的,当我从一台机器发送数据时,我确实在另一台机器上接收它。
但是,我在发送方上序列化的数据大小为 8150 字节,我将其写入流中。
在接收端,我只收到大约 13 个字节的数据,而不是我预期的全部负载...
所以看来我负责在接收端通过等待所有数据通过可能是多个流的方式来重建完整的数据对象......
但是,我收到的数据包似乎是 1:1 - 也就是说,如果我在发送之前和接收之后设置了一个断点,那么当我将数据写入并刷新到输出流并发送时它,接收端然后触发,我得到似乎是部分数据,但我从来没有得到任何其他数据。
所以当我从发送机器发送 8150 个字节时,接收端只收到一个长度约为 13 个字节的数据包......
我会丢失数据包吗?它似乎是一个一致的 13 字节,所以也许它是一个缓冲区设置,但问题是我的 8150 字节是任意的;有时它更大或更小......
我显然做错了,但我对网络编程太陌生了,我不确定从哪里开始解决这个问题;在高层次上,将完整的内存对象从一台机器发送到另一台机器以便我可以在接收端重建它的精确副本的正确方法是什么?
【问题讨论】:
标签: networking uwp datagram