整个包的定义包括
head 2byte
length
crc16 校验
flag
content 内容
end我对网络编程这块没接触过,希望大家指点下资料或者代码看看,有人讲解下java里发送和接受数据包的一些关键点,非常感谢

解决方案 »

  1.   

    这个结构很好定义,和Java没啥关系,关键就是你要搞明白byte[]就是C++,也是发送byte数组的。当然了,C++面对的是直接的内存,Java是byte[]里面的内容。你这个很容易了,header 2B
    length  4B,或者2B(2B一般足够了)
    crc16   2B
    flag      4B,看你自己定义了,
    content    N bytes不需要所谓的end,length = 2 + 4 + 2 + 4 + N
      

  2.   

    其实主要是字节流的控制,你那个结构是可以的。
    我觉得还是要end,一串字节组过来,你可通过以head和end来截取一段正确的数据包,
    楼上分配的大小也挺合理的,length的长度2B应该足够了。
    另外我想问下这个length是表示什么的长度呢?content?还是其它?
      

  3.   

    因为有CRC校验了,所以end就没啥用了。再说了,End的内容是什么呢,怎么保证和content的内容不混淆了?
      

  4.   

    那是不是我只要将数据先做成字节流,然后分段按这个数据结构一段一段的装进去,再通过socket以流的形式发出去啊?