问题出现:最近在写一个配置文件的 多机同步工具,socket交互时,出现命令重复打印日志问题({command{conmand:"PING",data:[{}],success:true},这种格式,最前端的command 重复出现了),本来是先用in.read读取一小段数据,再由scanner 来读取数据,然后拼接成为一串json 转化成JSONObject进行命令的读取和数据的读取。
问题原因:因为提前读出了一部分,在拼接所以出现的,
问题解决:
InputStream in = socket.getInputStream();
byte[] firstStr = new byte[1000];
in.read(firstStr);
直接使用byte数组方式读取,在重构字符串解决。
----------------------------时间线---------------------------------------
是因为循环的原因,当scanner 的hasNextLine方法内并没有执行预先读取一小段数据,所以每次取的字符串都是第一次的。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于