[英]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.