Flush buffer là gì

Quote:
Em có search google và hiểu được flush là để đẩy dữ liệu ngay lập tức từ bộ đệm (Buffer) vào ổ đĩa cứng. Còn nếu không dùng flush thì khi nào bộ đệm đầy nó mới bắt đầu đẩy dữ liệu
Em code theo 1 bác trên mạng về một ứng dụng chat đơn giản dùng Socket
Cái em không hiểu là người ta dùng flush để làm gì (Chỗ em tô đỏ). Trong khi em thử xóa flush đi thì kết quả chạy vẫn y hệt
Flush buffer là gì


Với cả khi em thử xóa flush đi, ví dụ em nhập dấu chấm ở bên client thì server cũng nhận được luôn, chả nhẽ 1 dấu chấm đã làm đầy bộ đệm ạ
Flush buffer là gì


Class Server
Quote:
package NetworkInJava;

import java.io.*;
import java.util.*;
import java.net.*;

public class Server {

public static void main(String[] args) {
try {
//Tao mot server sockeet voi cong la 1021
ServerSocket server = new ServerSocket(1021);
//Server chap nhan du lieu tu cac client co cung port 1021
Socket socket = server.accept();

//tao luong gui tra ket qua cho client
DataOutputStream out = new DataOutputStream(socket.getOutputStream());

//Tao luong nhan du lieu tu client toi
DataInputStream in = new DataInputStream(socket.getInputStream());

Scanner input = new Scanner(System.in);

while (true) {
//Doc du lieu tu clien tra ve
String str = in.readUTF();

if (str.equalsIgnoreCase("q")) {
break;
}else{
System.out.println("Client: " + str);
}
//Gui du lieu cho client
System.out.println("\nI: ");
out.writeUTF(input.nextLine());
out.flush();

}
in.close();
out.close();
socket.close();
server.close();
} catch (IOException e) {
System.err.println(e);
}
}
}
Class Client
Quote:
package NetworkInJava;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import java.io.*;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
try{
//Khai báo IP và PORT
Socket socket = new Socket("localhost", 1021);

//gửi dữ liệu sang server
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
DataInputStream in = new DataInputStream(socket.getInputStream());

Scanner input = new Scanner(System.in);
while(true){
//Gui du lieu len server
System.out.println("\nI: ");
out.writeUTF(input.nextLine());
out.flush(); -> Tác dụng của cái này là gì ạ?

//doc du lieu tu server ve

String str = in.readUTF();
if(str.equalsIgnoreCase("q")){
break;
}else{
System.out.println("Server: " + str);
}
}
in.close();
out.close();
socket.close();


}catch(Exception e){
System.err.println(e);
}
}
}