java socket 一次性读取数据reader的数据

diggorykong 2012-12-07 04:14:04
最近研究java socket问题,由前台向后台java发送数据,数据由一行一行数据组成,我想一次性发送整体数据,带有回车换行的那种。目前问题是,在java socket 中,貌似进入到while循环之后,如果不结束不会跳出循环。循环中只能用readline进行对buffer一行一行的读取,在读取中,我想要把数据一次性发给其他方法。如果按目前方式,我只能这样发,print('我'),print(’我是‘),print(’我是大‘),print(’我是大哥‘),这样数据就重复了,不知道怎么一次性发送print(’我是大哥‘)

private DevicePos(int port) {
System.out.println(">> Starting SimpleServer");
try {
socket = new ServerSocket(port);
client = socket.accept();
reader = new BufferedReader(new InputStreamReader(client
.getInputStream(), "UTF-8"));
writer = new BufferedWriter(new OutputStreamWriter(client
.getOutputStream(), "UTF-8"));
String readTmp = new String();
String fileReadIn = new String();
while((readTmp = reader.readLine()) != null){
fileReadIn += readTmp + "\r\n"; 我想要一次性完整读出fileReadln
System.out.println(fileReadIn);
}
System.out.print("123");
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
...全文
309 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲雪kimi 2012-12-07
  • 打赏
  • 举报
回复
那你这样不是自己陷入自己的陷阱里了吗,为什么不在发送端将数据整理好,再发送过来呢。你在循环中是没有办法控制什么时候将fileReadIn传递给其他方法,除非你在发送端在数据都发送出去后最后一行给一个标识字符串,然后在循环中做if判断,传递给方法,但这中用法不太实际。还是建议在发送端把数据整理好吧。
l_9style 2012-12-07
  • 打赏
  • 举报
回复
reader.readLine()本来就是按行读取的,将System.out.println(fileReadIn);这句放到while循环外面,你想发到其他方法,则在while循环外调用你拼接的字符串吧
clariones 2012-12-07
  • 打赏
  • 举报
回复
不会啊 只用print("我是大哥\n")就好了

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧