2011-04-07 170 views
3

有沒有發送緩衝區大小的限制,我可以發送小包-ie:1000字節- 但是,當我嘗試發送約20K什麼也沒有發生,遠程將不會收到數據包 加遠程將不會收到任何更多的數據。Socket.Send緩衝區大小是否有限?

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

「數據包」是一個UDP術語。 UDP被限制到最小的MTU:http://en.wikipedia.org/wiki/Maximum_transmission_unit – 2011-04-07 21:15:40

回答

2

作爲文檔狀態,this method返回發送的字節數。這是你的責任,然後發送剩餘的字節。

+0

緩衝液1024: 'socket.BeginReceive(sm.m_StreamManager.m_Buffer,0,BUFFER_SIZE_1024,0, \t \t \t \t新的AsyncCallback(this.ReadCallback),sm);' – 2011-04-08 06:48:52

4

Send()返回一個Int32,指示發送了多少字節。所以可以推斷出緩衝區大小的上限是Int32.MaxValue。

至於爲什麼你在使用20k字節緩衝區時遇到麻煩 - 你沒有提供足夠的信息來猜測。

1

根據MSDN,Socket.SendBuffer默認緩衝區大小爲8192。如果需要,你可以增加這個。

tcpSocket.SendBufferSize = 8192;