在VB6中工作時,我使用Winsock通過Internet發送和接收消息。 在VB6的Winsock流行的問題是,當我送一個大的字符串約7000字符,客戶端收到許多部分截斷爲2500-> 3000字,我需要加入截斷包有原來的消息是這樣的:傳入消息是否在.NET UdpClient/UDPServer中自動截斷?
Public FullMessage as string
Private Sub wskConnect_DataArrival(ByVal bytesTotal As Long)
Dim sBuff As String
wskConnect.GetData sBuff, vbString
FullMessage = FullMessage & sBuff
End sub
此問題在此鏈接中確認VB6 winsock(VB6 Asynchronous Tcp Client truncates incoming messages)
現在我要將我的代碼遷移到.NET Framework。使用.Net UDPClient/TCPClient時,是否需要執行相同的方法? .Net是否會自動爲我解決這個問題,或者該消息仍然是自動截斷的,我需要自己加入它?這個問題是出於UDP協議還是TCP協議,還是僅用於TCP協議?
你的答案意味着你可以使用UDP發送*任何消息*。發送大於單個數據包大小的數據將會遇到與任何基於數據流的協議相同的問題,因爲您需要自行實施數據流。這比直接使用TCP更加有效。也許你可以在OP決定UDP將結束他所有的消息發送問題之前編輯它。 – nvoigt 2014-09-01 08:25:25
在這種情況下,65k的限制就足夠了,因爲他聲稱「我發送了一個大約7000字符的字符串」。但是,我應該像你說的那樣指出這一點。 – jgauffin 2014-09-01 08:28:10
非常感謝你們兩位男士,我已經測試過自己並找到了答案。我已經知道65k的限制,以及在使用UDP時數據包丟失的可能性。 jgauffin的答案對我來說很好。同時也非常感謝你分享大量有用的信息。 – DucFabulous 2014-09-01 13:26:22