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传来的字符串
问题是,放到服务器上测试的时候发现,多个客户端发送数据的时候,服务器端会丢失数据,而且只丢失的是整个数据的最后一个字符,而且这个是时好时坏的,有的时候能成功有的时候不能,请问大家到底问题出在了哪里? 展开
客户端部分代码如下:
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传来的字符串
问题是,放到服务器上测试的时候发现,多个客户端发送数据的时候,服务器端会丢失数据,而且只丢失的是整个数据的最后一个字符,而且这个是时好时坏的,有的时候能成功有的时候不能,请问大家到底问题出在了哪里? 展开
2个回答
展开全部
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
既然已经设置为自历升誉动刷新了,为什么还调用
out.flush();
可能是编码问题把。楼主肢段试试把utf-8去掉!
或者调试下 重点观察这部分的代码运行
while ((msg = br.readLine()) != null)
{处理笑模msg;}
既然已经设置为自历升誉动刷新了,为什么还调用
out.flush();
可能是编码问题把。楼主肢段试试把utf-8去掉!
或者调试下 重点观察这部分的代码运行
while ((msg = br.readLine()) != null)
{处理笑模msg;}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用debug调试一下吧,很快会看出问题所在的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询