[英]Message too long error in Socket communication in C#
当我使用sendto()发送消息时,出现错误“消息太长”吗?
Socket tcpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
如何找到可以发送的最大尺寸? 我可以改变吗? 这里可能有什么问题?
首先, SendTo
仅用于UDP套接字。 在上面的代码段中,您正在打开一个TCP套接字。 SendTo
不适用于TCP套接字。 尝试使用UDP套接字,看看是否可行。 请记住,UDP数据包的最大实际大小为65,507字节。 通常,您希望将UDP数据包保持较小,以避免与传输有关的各种网络元素造成碎片。
编辑:
使用TcpClient使您的生活更轻松。
Int32 port = 13293;
String host = "somehost.com";
TcpClient tcpClient = new TcpClient(host, port);
Byte[] data = System.Text.Encoding.ASCII.GetBytes("your message to send");
NetworkStream stream = tcpClient.GetStream();
stream.Write(data, 0, data.Length);
从Linux的socket()手册页中,您应该能够使用sysctls(2)或/ proc / sys / net / core / *文件。 我认为您尤其可以使用以下内容:
rmem_default
包含套接字接收缓冲区的默认设置(以字节为单位)。
rmem_max
包含用户可以通过使用SO_RCVBUF套接字选项设置的最大套接字接收缓冲区大小(以字节为单位)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.