在Java网络编程中,有的时候客户端或者服务端需要持续向对方发送数据,有的时候发送速度超过了接收速度,就会出现一次读两份数据,甚至更多的现象发生。
如何解决这个问题呢?我们可以每次发送一行数据,然后另一边每次读入一行数据。这边一行一行地发送,那边读完一行了再去读下一行,这样就会每次发送的数据以行为单位,就可以避免一次接受多条连着的数据了。因为服务端和客户端都是Socket操作,其实二者都是一样的,所以没有具体区分服务端还是客户端。
发送端Socket操作(Socket send)
//获得发送端socket的OutputStream的PrintWriter封装对象
PrintWriter printWriter = new PrintWriter(send.getOutputStream());
//持续发送数据
for (int i = 0; i < 500; i++) {
String message = "Hello World";
//发送一行数据
printWriter.println(message);
//将缓冲区数据发送出去
printWriter.flush();
}
接收端Socket操作(Socket receive)
//获得接收端socket的InputStream的BufferedReader封装对象
BufferedReader reader=new BufferedReader(new InputStreamReader(receive.getInputStream()));
//一直接收数据
while (true){
String message = reader.readLine();
System.out.println(message);
}