日期:2014-05-20  浏览次数:20681 次

java socket 一次性读取数据reader的数据
最近研究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();  
   }  
}
------解决方案--------------------
不会啊 只用print("我是大哥\n")就好了
------解决方案--------------------
reader.readLine()本来就是按行读取的,将System.out.println(fileReadIn);这句放到while循环外面,你想发到其他方法,则在while循环外调用你拼接的字符串吧
------解决方案--------------------
那你这样不是自己陷入自己的陷阱里了吗,为什么不在发送端将数据整理好,再发送过来呢。你在循环中是没有办法控制什么时候将fileReadIn传递给其他方法,除非你在发送端在数据都发送出去后最后一行给一个标识字符串,然后在循环中做if判断,传递给方法,但这中用法不太实际。还是建议在发送端把数据整理好吧。