Lập trình mạng với Java Swing + Socket
Bài đăng này đã không được cập nhật trong 3 năm
Xin chào mọi người trong bài này mình sẽ hướng dẫn các bạn thiết kế ra 1 form đơn giản có gửi nhận dữ liệu với Java Swing + Socket, IDE mình sử dụng là Eclipse mọi người nhé.
1. Cài đặt windowbuilder để lập trình giao diện Java Swing
Để cài đặt được windowbuilder trên Eclipse ta chọn Help -> Eclipse Marketplace Sau đó trên thanh tìm kiếm ta gõ tìm "windowbuilder" và nhấn cài đặt. Ở đây mình đã cài đặt rồi nên trạng thái hiển thị sẽ là Installed Sau khi đã cài đặt xong khi tạo mới 1 file ta nhấn vào package New -> Other Tiếp theo ta tìm đến WindowBuilder -> Swing Designer -> JFrame
Ta đặt tên cho file rồi nhấn Finish
Để có thể kéo thả ta chuyển sang tab Designer . Tại đây có rất nhiều thành phần, mọi người có thể lên mạng đọc thêm về các dùng ở đây mình sẽ đi qua nhanh về luồng từ dàn giao diện và kết nối với socket, đầu tiên layout mình sẽ chọn là GridBagLayout, tiếp đó mình kéo thêm 2 JLabel, 1 JtextFeild, 1 JButton Ta click vào từng phần tử để đặt Variable cho dễ thao tác và xử lý trong code Để gán sự kiện click chuột cho nút gửi ta nhấn chuột phải vào nút gửi -> Add event handler -> mouse -> mouseClicked Vầy là đã xong phần giao diện và gán sự kiện đơn giản. Tiếp theo ta sẽ xử lý phần code
2. Socket
2.1. Luồng truyền nhận dữ liệu
2.2. Khởi tạo đầu server
ServerSocket server_socket = new ServerSocket(6543);
/// Khởi tạo Socket và chấp nhận kết nối từ đối tượng Socket Server.
Socket socket = server_socket.accept();
/// Tạo luồng đọc dữ liệu vào từ client
DataInputStream din = new DataInputStream(socket.getInputStream());
// Tạo luồng in dữ liệu trả ra cho client
DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
2.3. Nhận tin và phản hồi
// Vòng lặp nghe dữ liệu từ client
while (true) {
try {
String str_in = din.readUTF();
System.out.println("client says: " + str_in);
// Trả về kết quả
dout.writeUTF("Server Received Data:"+str_in);
dout.flush();
} catch (IOException e1) {
// TODO Auto-generated catch block
status = false;
e1.printStackTrace();
}
}
2.4. Client kết nối và gửi tin
Socket client = new Socket("localhost",6543);
DataOutputStream dout = new DataOutputStream(client.getOutputStream());
DataInputStream din = new DataInputStream(client.getInputStream());
try {
String message = txtNoiDung.getText().toString();
dout.writeUTF(message);
String output = din.readUTF();
lbKq.setText(output);
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
3. Source Code
All rights reserved