关于socket 长连接 频繁传输图片数据导致部分图片数据无法正常解析

hibegin 发布于 2014/07/07 12:50
阅读 482
收藏 0
我用1b 的读取不会出现数据错乱的情况, 倒是一旦大了就会出现图片数据乱掉了, 我也不清楚撒子问题。不知道这里有人遇到过不? 感觉是tcp 长连接数据连在一起了。。
加载中
0
hongmajia
hongmajia

要定义一个传输协议。

感觉你的情况是多个图片数据连在一起,你读取图片数据,但是多读了,把其它图片数据也一起读了进来导致的。

你要定义一个传输协议,首先有个协议头,里面标记这个图片大小。

包体可以就是二进制图片数据

读数据的时候先读一个协议头长度的数据,通过协议头获得图片的大小,然后再读取图片大小长度的数据。这样保证读取的数据长度不越界,就不会有错乱的情况

hibegin
hibegin
无论如何第一个的长度都是对的。 但是后面的的长度就一定会对了 对了服务使用了NIO这个有响应不? 又或者是多线程呢?
0
星爷
星爷
TCP粘包处理
hibegin
hibegin
我感觉也是。 那改怎么处理。 或者你怎么处理??
0
Karblue
Karblue
粘包处理的原因。
星爷
星爷
回复 @wzfz : 先网上看下TCP/IP的粘包处理,自己觉得麻烦先用netty用着吧!
Karblue
Karblue
回复 @wzfz : 数据做分段发送。给每段数据做checksum,然后客户端校验数据是否正确,然后把数据连接起来,否则重新请求数据
hibegin
hibegin
嗯 我也意识到了。 该作何处理??数据分包发送??但是这个TCP本来就有分包了呀
返回顶部
顶部