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


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 ạ

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];
}
}
}

Video liên quan

Chủ Đề