java socket 有时接受数据完整有时候不完整,会丢失最后一个字符 20

这个问题很是苦恼,情景是这样的,多个客户端给服务器端发送数据,服务器端采用多线程技术来接收数据,传送的数据是个字符串。客户端部分代码如下:socket=newSocket... 这个问题很是苦恼,情景是这样的,多个客户端给服务器端发送数据,服务器端采用多线程技术来接收数据,传送的数据是个字符串。
客户端部分代码如下:
socket = new Socket(ip, port);
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
String data111 ;//这个是数据,这里就用这个data111代表了,并不是源码不用纠结语法问题
InputStream in_withcode = new ByteArrayInputStream(data111.getBytes("UTF-8"));
BufferedReader line = new BufferedReader(new InputStreamReader(
in_withcode));
out.println(line.readLine());
out.flush();

服务器端部分代码:
从socket获得的
BufferedReader br 和 PrintWriter pw 具体代码就不粘贴了
然后
String msg = null;
while ((msg = br.readLine()) != null)
{处理msg;}
通过msg=br.readLine()来接收socket传来的字符串

问题是,放到服务器上测试的时候发现,多个客户端发送数据的时候,服务器端会丢失数据,而且只丢失的是整个数据的最后一个字符,而且这个是时好时坏的,有的时候能成功有的时候不能,请问大家到底问题出在了哪里?
展开
 我来答
y562536056
2012-08-29 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:208
采纳率:0%
帮助的人:99.5万
展开全部
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

既然已经设置为自历升誉动刷新了,为什么还调用
out.flush();

可能是编码问题把。楼主肢段试试把utf-8去掉!
或者调试下 重点观察这部分的代码运行
while ((msg = br.readLine()) != null)
{处理笑模msg;}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
木星上的程序员
2012-08-29 · TA获得超过476个赞
知道小有建树答主
回答量:602
采纳率:0%
帮助的人:409万
展开全部
用debug调试一下吧,很快会看出问题所在的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式