套接字的Send缓冲区大小有限制吗?

3

发送缓冲区大小是否有限制?我可以发送小的数据包 - 比如1000字节 - 但是当我尝试发送20K时,什么也不会发生,远程端点将无法接收到数据包,并且远程端点将不再能够接收到任何更多的数据。

System.Net.Sockets.Socket.Send((byte)buffer);

2
"Packet"是UDP术语。UDP仅限于最小MTU:http://en.wikipedia.org/wiki/Maximum_transmission_unit - Hans Passant
3个回答

4

Send() 方法返回一个 Int32 类型的整数,指示发送了多少字节。因此,可以推断出缓冲区大小的上限为 Int32.MaxValue。

至于为什么您在使用 20k 字节缓冲区时遇到了问题 - 您没有提供足够的信息来猜测原因。


3
如文档所述,该方法返回发送的字节数。之后您需要负责发送剩余的字节。

缓冲区大小为1024:socket.BeginReceive(sm.m_StreamManager.m_Buffer, 0, BUFFER_SIZE_1024, 0, new AsyncCallback(this.ReadCallback), sm); - Nime Cloud

2

根据MSDN,Socket.SendBuffer的默认缓冲区大小为8192。如果需要,您可以增加此大小。

tcpSocket.SendBufferSize = 8192;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接