2016-06-11 58 views
0

我正在使用Socket.BeginReceive方法來接收來自連接客戶端的數據。但是,我發送的信息可能會有所不同。例如,一條消息的大小可能爲100,000個字節,另一條消息的大小可能爲3個字節,並且很少發送100,000個字節的消息!有沒有一種方法將BufferSize的值設置爲一個自動值,就像使用Socket.Receive一樣?如何設置自動BufferSize?

+0

您誤解套接字是如何工作的,請務必閱讀基礎知識。一次調用永遠不會得到100,000個字節。 UDP只能傳輸一個不大於MTU的消息。 TCP不能處理消息,它實現了一個流。使用4096字節的緩衝區是一個不錯的選擇。 –

回答

1

將緩衝區大小設置爲IP數據包的最大單位傳輸(MTU)大小(64 KB)。它永遠不會超過這個尺寸,因爲更大的消息是分段的,所以它們可以更容易傳輸。