Đoạn kết nối của 2 máy client và server

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 3

Đoạn kết nối của 2 máy client và server :

public void actionPerformed(ActionEvent e) {


mngIP = textField_1.getText();// lấy địa chỉ ip được nhập vào
từ trường textField_1 trên giao diện và gán cho biến mngIP
mngPort = Integer.parseInt(textField_2.getText());
staff = textField.getText();
try {
mngSocket = new Socket(mngIP, mngPort);
if (mngSocket != null) {
ChatJPanel p = new ChatJPanel(mngSocket, staff,
"Manager");
thisFrame.getContentPane().add(p);
p.getTxtMessages().append("Manager is running");
p.updateUI();

bf = new BufferedReader(new
InputStreamReader(mngSocket.getInputStream()));
os = new
DataOutputStream(mngSocket.getOutputStream());

os.writeBytes("Staff" + textField.getText());
os.write(13);
os.write(10);
os.flush();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
Trong đoạn mã trên, kết nối giữa máy client và server được thực hiện trong
phần mã của lớp Client trong hàm actionPerformed của nút
"Connect"client tạo một đối tượng Socket và truyền địa chỉ IP và cổng của máy
server vào hàm khởi tạo Socket. Sau đó, nếu kết nối thành công, máy client có
thể tiếp tục xử lý các công việc khác liên quan đến việc giao tiếp với máy
server thông qua kết nối này.
Vì đây chỉ là phần mã của máy client, phần mã của máy server không được
đưa ra trong đoạn mã trên.

Trong đoạn mã trên, phương thức `actionPerformed` được gọi khi người dùng nhấn vào nút "Connect"
trên giao diện của máy client. Đây là phần mã xử lý sự kiện của nút đó.

1. `mngIP = textField_1.getText();`: Lấy địa chỉ IP được nhập vào từ trường `textField_1` trên giao
diện và gán cho biến `mngIP`.
2. `mngPort = Integer.parseInt(textField_2.getText());`: Lấy số cổng được nhập vào từ trường
`textField_2` trên giao diện, chuyển đổi từ kiểu dữ liệu chuỗi sang kiểu số nguyên và gán cho biến
`mngPort`.

3. `staff = textField.getText();`: Lấy thông tin về nhân viên từ trường `textField` trên giao diện và gán cho
biến `staff`.

4. `mngSocket = new Socket(mngIP, mngPort);`: Tạo một đối tượng `Socket` và kết nối tới địa chỉ IP và
cổng đã được nhập vào từ máy server.

5. `if (mngSocket != null) { ... }`: Kiểm tra xem kết nối đã được thiết lập thành công hay không.

6. `ChatJPanel p = new ChatJPanel(mngSocket, staff, "Manager");`: Tạo một đối tượng `ChatJPanel` với
các tham số truyền vào là `mngSocket` (đối tượng kết nối), `staff` (thông tin nhân viên) và "Manager"
(vai trò là quản lý).

7. `thisFrame.getContentPane().add(p);`: Thêm đối tượng `p` vào giao diện chính của máy client.

8. `p.getTxtMessages().append("Manager is running");`: Lấy đối tượng `txtMessages` từ `p` (đối tượng


`ChatJPanel`) và thêm chuỗi "Manager is running" vào cuối nội dung trong đối tượng `txtMessages`.

9. `p.updateUI();`: Cập nhật giao diện của `p`.

10. `bf = new BufferedReader(new InputStreamReader(mngSocket.getInputStream()));`: Tạo một đối


tượng `BufferedReader` để đọc dữ liệu từ luồng đầu vào của `mngSocket`.

11. `os = new DataOutputStream(mngSocket.getOutputStream());`: Tạo một đối tượng


`DataOutputStream` để ghi dữ liệu vào luồng đầu ra của `mngSocket`.

12. `os.writeBytes("Staff" + textField.getText());`: Ghi chuỗi "Staff" kết hợp với thông tin nhân viên từ
`textField` vào luồng đầu ra.

13. `os.write(13);`: Ghi một ký tự carriage return (CR) vào luồng đầu ra.

14. `os.write(10);`: Ghi một ký tự line feed (LF) vào luồng đầu ra.

15. `os.flush();`: Đảm bảo rằng toàn bộ dữ liệu đã được ghi vào luồng đầu ra.

16. `ex.printStackTrace();`: Nếu có bất kỳ ngoại lệ nào xảy ra trong quá trình kết nối, thông tin về ngoại lệ
sẽ được in ra màn hình để gỡ lỗi.

Tóm lại, đoạn mã trên thực hiện các bước để kết nối máy client với máy server thông qua việc tạo một
đối tượng `Socket`, thiết lập các luồng đầu vào và đầu ra, gửi thông tin về nhân viên từ máy client tới
máy server và cập nhật giao diện.
Đoạn mã trong file client được sử dụng để kết nối client với server là đoạn mã sau:

mngSocket = new Socket(mngIP, mngPort);

Trong phương thức `actionPerformed` của nút "Connect" (`btnNewButton`), đoạn mã này tạo ra một đối
tượng `Socket` mới với địa chỉ IP của máy chủ (`mngIP`) và cổng của máy chủ (`mngPort`). Điều này tạo
ra một kết nối socket giữa client và server, cho phép truyền thông tin qua lại giữa hai bên.

Sau khi kết nối thành công, đoạn mã tiếp theo tạo một đối tượng `ChatJPanel` và thêm nó vào giao diện
của khung chứa (`thisFrame.getContentPane().add(p)`). Đối tượng `ChatJPanel` này được sử dụng để
hiển thị giao diện trò chuyện giữa client và server.

Vì vậy, khi bạn nhấp vào nút "Connect" trên client, đoạn mã trên sẽ thực hiện kết nối client với server và
hiển thị giao diện trò chuyện.

You might also like