Socket服务端使用多线程接受客户端发送的包(每个客户端开一个线程),并发时包会错乱,该怎么处理?
发布网友
发布时间:2022-05-01 00:54
我来回答
共1个回答
热心网友
时间:2023-10-08 22:02
服务器端接受客户端发送的包,并发会错乱?
十多年开发过程中从未遇到过。何况您还是每个客户端开一个线程,那更不可能错乱了。
通常这种情况都是由于您代码中逻辑错误造成的。您不应该把问题归结为socket、并发或多线程,而应该在代码逻辑里找找原因。
您是否多个接受线程共用了同一个接收buffer?处理公共数据时是否加了线程锁?
描述太简单了,没法直接下定论。追问找到问题了,原因是用s.getInputStream();来接收数据,发过来的包都连在一起,一旦发错了,哪后面解析就会出现错误,这种有没有好的解决方法?
追答您应该每个线程用各自的缓冲区和处理段来接收,而不是共用同一个。