使用TCP協議編寫應用程序時,須要考慮一個問題:TCP協議是無消息邊界的,即不能保證來自單個Send方法的數據能被單個Receive方法讀取。html
eg:編程
第一次發送:abcdefg 第二次發送:123456 接收方接收數據時,可能會出現如下狀況:post
第一次接收:abcdefg123456 也可能出現:第一次接收:abc 第二次接收:efg12 第三次接收:3456spa
所以要解決TCP發送消息與接收消息一致性,編程時必需要解決消息邊界問題。htm
解決辦法:一、發送固定長度的消息。這種方適用於信息長度固定的場合。blog
二、將消息長度與消息一塊兒發送。這種方法增長了數據傳送信息量,也增長了編程工做量。字符串
eg:每次發送的字符串信息前面用2個字節代表本次信息的長度,接收方先從這兩個字節獲得信息長度。而後根據長度值循環接收發送方發送的字符串it
三、使用特殊標記分隔消息。這種方法適合信息自己不包含特殊標記的場合。如每發送一行信息,就能夠用回車換行做爲分隔符。class