Socket服务端使用多线程接受客户端发送的包(每个客户端开一个线程),并发时包会错乱,该怎么处理?

 我来答
百度网友00e4ec0
2012-10-18 · TA获得超过308个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:145万
展开全部
服务器端接受客户端发送的包,并发会错乱?
十多年开发过程中从未遇到过。何况您还是每个客户端开一个线程,那更不可能错乱了。

通常这种情况都是由于您代码中逻辑错误造成的。您不应该把问题归结为socket、并发或多线程,而应该在代码逻辑里找找原因。

您是否多个接受线程共用了同一个接收buffer?处理公共数据时是否加了线程锁?

描述太简单了,没法直接下定论。
追问
找到问题了,原因是用s.getInputStream();来接收数据,发过来的包都连在一起,一旦发错了,哪后面解析就会出现错误,这种有没有好的解决方法?
追答
您应该每个线程用各自的缓冲区和处理段来接收,而不是共用同一个。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式