定义包头包体是为了把传输的数据分块吗?还有其他的作用吗

解决方案 »

  1.   

    通过包头对包进行识别,包头中可以记录包的类型、长度等信息。
    如果你的包长度都是固定的,可以不分包头和包体;如果长度不固定,接收方需要知道该接收多少数据,这时候就需要有一个包头了,接收的时候先收包头,然后根据包头中的信息得知后面数据的长度。是正解,建议楼主看经典的《TCP/IP详解》三卷书。
      

  2.   

    如果你不需要对包进行解析处理是可以不定义这些的
    但是如果后期你需要对包的内容进行处理 定义包头和后面的data就是必要的了 
    thx
      

  3.   

    通过包头对包进行识别,包头中可以记录包的类型、长度等信息。 
    如果你的包长度都是固定的,可以不分包头和包体;如果长度不固定,接收方需要知道该接收多少数据,这时候就需要有一个包头了,接收的时候先收包头,然后根据包头中的信息得知后面数据的长度。
    //解释得很正确。TCP是基于字节流的协议,因为你无法确定调用一次发送和接收会返回多少字节,所以最好就是在协议中自己加入这种信息,以方便接收端接收数据。UDP就不存在这个问题了,因为它发送的数据包都是有边界的。