0% found this document useful (0 votes)
1 views7 pages

Java

Uploaded by

20022002phuc42
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views7 pages

Java

Uploaded by

20022002phuc42
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

1.

Code:
Server:
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

public class chatServer401 {


public static void main(String[] args) {
final int port = 5678;
try {
//tao server socket
ServerSocket ss = new ServerSocket(port);
[Link]("Socket da duoc tao tai cong: " + port);

//chap nhan ket noi tu client


Socket s = [Link]();
[Link]("Client da ket noi. BAT DAU!");

//tao doi tuong de doc du lieu tu client


InputStream is = [Link]();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader input = new BufferedReader(isr);
//tao doi tuong de gui du lieu den client
OutputStream os = [Link]();
PrintWriter output = new PrintWriter(os, true);

//tao thread de gui tin nhan


Thread sendThread = new Thread(() -> {
BufferedReader consoleInput = new BufferedReader(new InputStreamReader([Link]));
String serverMsg;
try {
while (true) {
serverMsg = [Link]();
if (serverMsg != null) {
[Link](serverMsg);
}
}
} catch (IOException e) {
[Link]();
}
});
[Link]();

//Doc tin nhan tu client


String msg;
while( (msg = [Link]()) != null ){
if ("QUIT".equalsIgnoreCase(msg)){
[Link]("Client dong ket noi");
break;
}

[Link]("Client: " + msg);


}

} catch (IOException e) {
[Link]();
}
}
}

Client:
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class chatClient401 {
public static void main(String[] args) {
final String server_address = "localhost";
final int port = 5678;

try (Socket s = new Socket(server_address, port);


PrintWriter output = new PrintWriter([Link](), true);
BufferedReader input = new BufferedReader(new InputStreamReader([Link]));
BufferedReader serverInput = new BufferedReader(new InputStreamReader([Link]())))
{

[Link]("Client ket noi toi server");

// Tạo luồng để đọc tin nhắn từ server


Thread serverReader = new Thread(() -> {
String serverMsg;
try {
while ((serverMsg = [Link]()) != null) {
[Link]("Server: " + serverMsg);
}
} catch (IOException e) {
[Link]("Mat ket noi voi server");
}
});
[Link]();

String msg;
while (true) {
msg = [Link]();
[Link](msg);

if("QUIT".equalsIgnoreCase(msg)){
[Link]("Dong ket noi toi server");
break;
}
}

} catch (IOException e) {
[Link]();
}
}
}
2a.

Code:
Server:
import [Link].*;
import [Link].*;
import [Link].*;

public class chatServer402 {


private static final Map<Socket, PrintWriter> clientOutputs = new HashMap<>();

public static void main(String[] args) {


final int port = 5678;
try (ServerSocket ss = new ServerSocket(port)) {
[Link]("Socket da duoc tao tai cong: " + port);

// Thêm dòng này để bắt đầu thread đọc input từ console


startConsoleInputThread();

while (true) {
Socket clientSocket = [Link]();
[Link]("Client moi da ket noi.");

PrintWriter output = new PrintWriter([Link](), true);


[Link](clientSocket, output);

Thread clientHandler = new Thread(() -> handleClient(clientSocket));


[Link]();
}
} catch (IOException e) {
[Link]();
}
}

private static void handleClient(Socket clientSocket) {


try (BufferedReader input = new BufferedReader(new
InputStreamReader([Link]()))) {
String msg;
int clientIndex = new ArrayList<>([Link]()).indexOf(clientSocket);
while ((msg = [Link]()) != null) {
if ("QUIT".equalsIgnoreCase(msg)) {
[Link]("Client " + clientIndex + " đã đóng kết nối");
break;
}
[Link]("Client " + clientIndex + ": " + msg);
}
} catch (IOException e) {
[Link]();
} finally {
[Link](clientSocket);
try {
[Link]();
} catch (IOException e) {
[Link]();
}
}
}

// Phương thức để gửi tin nhắn riêng cho một client cụ thể
public static void sendPrivateMessage(Socket clientSocket, String message) {
PrintWriter output = [Link](clientSocket);
if (output != null) {
[Link](message);
}
}

// Thread để đọc input từ console và gửi tin nhắn


private static void startConsoleInputThread() {
Thread consoleInputThread = new Thread(() -> {
try (BufferedReader consoleInput = new BufferedReader(new InputStreamReader([Link]))) {
while (true) {
[Link]("Nhap tin nhan (format: <client_index> <message>):");
String input = [Link]();
String[] parts = [Link](" ", 2);
if ([Link] == 2) {
int clientIndex = [Link](parts[0]);
String message = parts[1];
if (clientIndex >= 0 && clientIndex < [Link]()) {
Socket clientSocket = (Socket) [Link]().toArray()[clientIndex];
sendPrivateMessage(clientSocket, message);
[Link]("Da gui tin nhan den client " + clientIndex);
} else {
[Link]("Chi so client khong hop le");
}
} else {
[Link]("Dinh dang khong hop le. Su dung: <client_index> <message>");
}
}
} catch (IOException e) {
[Link]();
}
});
[Link]();
}
}

Client:
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

public class chatClient401 {


public static void main(String[] args) {
final String server_address = "localhost";
final int port = 5678;

try (Socket s = new Socket(server_address, port);


PrintWriter output = new PrintWriter([Link](), true);
BufferedReader input = new BufferedReader(new InputStreamReader([Link]));
BufferedReader serverInput = new BufferedReader(new InputStreamReader([Link]())))
{

[Link]("Client ket noi toi server");

// Tạo luồng để đọc tin nhắn từ server


Thread serverReader = new Thread(() -> {
String serverMsg;
try {
while ((serverMsg = [Link]()) != null) {
[Link]("Server: " + serverMsg);
}
} catch (IOException e) {
[Link]("Mat ket noi voi server");
}
});
[Link]();

String msg;
while (true) {
msg = [Link]();
[Link](msg);

if("QUIT".equalsIgnoreCase(msg)){
[Link]("Dong ket noi toi server");
break;
}
}

} catch (IOException e) {
[Link]();
}
}
}

You might also like