• 【转】TCP协议的无消息边界问题


    http://www.cnblogs.com/eping/archive/2009/12/12/1622579.html 

     

    使用TCP协议编写应用程序时,需要考虑一个问题:TCP协议是无消息边界的,即不能保证来自单个Send方法的数据能被单个Receive方法读取。

    eg:

    第一次发送:abcdefg   第二次发送:123456         接收方接收数据时,可能会出现以下情况:

    第一次接收:abcdefg123456   也可能出现:第一次接收:abc 第二次接收:efg12 第三次接收:3456

    因此要解决TCP发送消息与接收消息一致性,编程时必须要解决消息边界问题。

    解决办法:1、发送固定长度的消息。这种方适用于信息长度固定的场合。

    2、将消息长度与消息一起发送。这种方法增加了数据传送信息量,也增加了编程工作量。

    eg:每次发送的字符串信息前面用2个字节表明本次信息的长度,接收方先从这两个字节得到信息长度。然后根据长度值循环接收发送方发送的字符串

    3、使用特殊标记分隔消息。这种方法适合信息本身不包含特殊标记的场合。如每发送一行信息,就可以用回车换行作为分隔符。

  • 相关阅读:
    20169215 缓冲区溢出漏洞实验
    20169215 2016-2017-2 实验二Nmap的使用与分析
    20169215 2016-2017-2 《网络攻防实践》/《网络攻击与防范》第八周学习总结
    Numpy Usage Introduction
    [Example of Sklearn]
    [Example of Sklearn]
    [Example of Sklearn]
    [Scikit-Learn]
    [Scikit-Learn]
    [Scikit-Learn]
  • 原文地址:https://www.cnblogs.com/SummerRain/p/4593551.html
Copyright © 2020-2023  润新知