使用StreamSockets接收大量数据

时间:2016-10-11 09:24:37

标签: c# .net network-programming uwp

我遇到了在W10客户端从StreamSocket接收大量数据的问题。在我们的协议中测试我们的一个数据包期间,反序列化数据存在问题。发现数据被削减并具有260B,尽管在数据包的定义中它应该包含更多数据。使用相同的输入在我们的Windows Phone 8客户端上测试相同的数据包比w10客户端提供更多的数据(大约26kB)。在服务器上检查了向两个客户端发送相同数量的数据。

首次尝试解决方法是将DataReader.LoadAsync()缓冲区增加到10 MB,但仍会收到相同数量的小数据。然后我使用WireShark检查连接,结果是所有数据都被Windows接收,但只有部分数据被客户端使用。下一次尝试解决问题的方法是在循环中使用DataReader.LoadAsync,但它会在更小的数据包上停止。在这一刻发现,之后可以读取数据包的其余数据。然后使用了Task.Delay(1000)。它起作用并且收到了所有数据,但这不是一个好的解决方案。我搜索了StackOverflow,微软论坛和谷歌,但没有解决方案。 StackOverflow对该问题的建议没有回答这个问题。

过了一会儿,我试图用循环中的StreamSocket.InputStream缓冲区读取固定数量的字节,并使用StreamSocket.InputStream.ReadAsync和所有可能的参数组合。它使用参数InputStreamOptions.PartialInputStreamOptions.None,但在到达数据包末尾时停止在ReadAsync上。我还将StreamSocketListenerStreamSocket一起使用,但它也没有用。

问题是使用StreamSockets和DataReader接收大量数据的方法是什么?

0 个答案:

没有答案