2012-03-06 133 views
0

我正在寫在TCP/IP的簡單二進制協議:它是由如下面TCP二進制協議實現

[命令datasize - 2字節的固定] [DATA]

利用此解決方案,即使我讀了多條消息,我可以按照它的大小來劃分每條消息,但是我有一個疑問:可能只接收一條消息的「部分」?

回答

2

您可以通過TCP流服務接收的唯一消息是單個字節。任何更復雜的內容都可能以單個字節或任何倍數來接收。所以,是的,您可以在一次接聽電話中收到「一條短信」的「僅一部分」。

+0

當一個主機發送一個10字節的消息,也許我可以接收它分開(像前3個字節後面跟着最後7個字節),但TCP丟失了前3個字節並只接收最後7個字節是可能的? (也許在電纜干擾或無線連接等奇怪情況下) – cyberpro4 2012-03-08 08:27:02

+1

'TCP丟失了前3個字節並且只接收到最後7個字節是可能的?'不,沒有一個行爲良好的實施。由於前3個字節的傳送失敗,最後7個不會傳送到應用層 - 序列號將會出現。 – 2012-03-09 12:01:13