使用TCP协议编写应用程序时,须要考虑一个问题:TCP协议是无消息边界的,即不能保证来自单个Send方法的数据能被单个Receive方法读取。html
eg:编程
第一次发送:abcdefg 第二次发送:123456 接收方接收数据时,可能会出现如下状况:post
第一次接收:abcdefg123456 也可能出现:第一次接收:abc 第二次接收:efg12 第三次接收:3456spa
所以要解决TCP发送消息与接收消息一致性,编程时必需要解决消息边界问题。htm
解决办法:一、发送固定长度的消息。这种方适用于信息长度固定的场合。blog
二、将消息长度与消息一块儿发送。这种方法增长了数据传送信息量,也增长了编程工做量。字符串
eg:每次发送的字符串信息前面用2个字节代表本次信息的长度,接收方先从这两个字节获得信息长度。而后根据长度值循环接收发送方发送的字符串it
三、使用特殊标记分隔消息。这种方法适合信息自己不包含特殊标记的场合。如每发送一行信息,就能够用回车换行做为分隔符。class