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