在Windows 8.1上,TcpClient始终获得ReceiveBufferSize = 65536

时间:2013-12-12 16:30:08

标签: c# tcpclient networkstream

我创建了一个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.

0 个答案:

没有答案