我创建了一个NetworkStream对象,读取的字节与TcpClient的ReceiveBufferSize相匹配。它在Windows 7上运行良好,但在Windows 8.1上似乎有问题。因此,我必须使我的缓冲区大小足够大,例如65536作为标题。
我不认为在主循环中创建这个相当大的缓冲区是一个不错的选择。有什么建议吗?
很多。[更新]
我查看了这个页面msdn-tcpclient.receivebuffersize,发现默认大小是8192.也许实际上默认大小在不同平台上会有所不同。
所以我只是让它更安全,
var client = tcpListener.AcceptTcpClient();
var data = new byte[client.ReceiveBufferSize];
client.GetStream().Read(data, 0, client.ReceiveBufferSize);
更好?
但我的问题不是如何为阅读目的新增一个足够的缓冲区大小,我的问题是为什么在Windows 8.1上将ReceiveBufferSize设置为65536,特别是我没有手动设置只是保持默认,否则怎么可能它适用于Windows 7.