对发送方来说,读一段发送一送;对接受方来说读一段,写一段;不用这么麻烦吧。
如果你用TCP协议,发送端是不用拆包的,TCP 协议会帮你做这个事情。如果你不怕麻烦,你就用滑动窗口协议自己实现,其实TCP协议就是滑动窗口协议,而且是双工的。滑动窗口协议怎么实现,你自己到网上去搜。
eaqqlet说得对,如果用TCP协议,发送端不用拆包的,TCP是面向连接的,只在连接存在,发送端就可以一直发送,再说,用TCP传文件不会发生丢包,适合重要文件的传输。这是UDP无法比的。
你是想做通信协议吧? 你可以自己订立一套协议 协议头协议头 由几个字节组成 然后你的IO接受到字节之后 根据协议头就是头几个字节来解析出一个完整的包 然后在将包放入你自己订立的消息队列 然后由另外一个线程负责从 消息队列中取出 消息 然后在发送给接受的人 这其中你不能做到 比如你如果要发送一个1G的包 服务端就一直等待你把这1G的包全都缓存到内存中然后再发送出去 这个事情必须由 发送端用逻辑将包拆解成小的包 然后一个一个的发送给服务端 服务端 只是将包发给接收人
不知道你有木有听说过有个叫GZIP的技术,他是在发送端将所有的数据整合压缩成一个小包,通过TCP/IP进行传输后到客户端再自动解压,获取数据,这样会很大的提高数据的传输速度。