Lập trình Socket trong Java - Nâng cấp kỹ năng lập trình Java của bạn
27/10/2021 13:30
. Trong những bài viết trước, chúng ta đã thảo luận về lớp URL trong Java. Trong hướng dẫn này, chúng ta sẽ tìm hiểu về khái niệm mạng của lập trình Java, đó là lập trình Socket trong Java và cách triển khai nó ở cả phía máy khách và máy chủ. Khái niệm về lập trình Socket trong Java
Lập trình socket đề cập đến giao tiếp giữa hai nút hoặc ứng dụng chạy trên JRE khác nhau (Java Runtime Environment). Chúng ta sử dụng lập trình socket trong Java để kết nối chương trình máy khách với chương trình máy chủ hoặc đơn giản hơn, kết nối máy khách và máy chủ. Lập trình socket trong Java có thể là hướng kết nối hoặc không kết nối. Gói java.net được sử dụng để lập trình socket trong Java. Có hai lớp trong gói này là lớp Socket và lớp ServerSocket .
Mỗi máy chủ là một chương trình phần mềm chạy trên một hệ thống cụ thể lắng nghe một cổng cụ thể và chờ các yêu cầu từ phía máy khách. Ví dụ: máy chủ Tomcat chạy trên số cổng 8080 phản hồi các yêu cầu đến trên số cổng này.
Lập trình Java Socket có hai phần.
- Chương trình Java Server Socket
- Chương trình Java Client Socket
Sơ đồ sau đây cho thấy quy trình Lập trình Socket:
Lập trình Socket trong Java - Socket trong Java là gì?
Socket trong Java là một trong những nút của liên kết giao tiếp hai chiều giữa các chương trình máy khách và máy chủ đang chạy trên mạng. Điểm cuối hoặc nút là sự kết hợp của địa chỉ IP và số cổng. Có một số cổng cho mỗi ổ cắm để lớp TCP có thể xác định ứng dụng nơi gửi dữ liệu.
>>> Tham khảo: Khóa học lập trình Java
Lớp java.net.Socket trong Java
Chúng ta sử dụng lớp Socket để tạo các socket cho máy khách và máy chủ. Lớp java.net.Socket đại diện cho socket. Cả chương trình máy khách và máy chủ đều sử dụng ổ cắm này để giao tiếp với nhau. Có một số phương thức trong lớp Socket.
STT |
Phương thức |
Mô tả |
1 |
public void connect(SocketAddress host, int timeout) throws IOException |
Kết nối socket với máy chủ đầu vào nhất định |
2 |
public int getPort() |
Trả về cổng mà socket được kết nối trên máy từ xa |
3 |
public int getLocalPort() |
Trả về cổng mà qua đó socket được liên kết trên máy cục bộ |
4 |
public SocketAddress getRemoteSocketAddress() |
Cung cấp địa chỉ của socket từ xa |
5 |
public InputStream getInputStream() throws IOException |
Trả về đầu vào của socket |
6 |
public void close() throws IOException |
Đóng socket khiến nó không còn khả dụng để kết nối với bất kỳ máy chủ nào |
Lớp java.net.ServerSocket trong Java - Lập trình Socket trong Java
Java.net.ServerSocket tạo một socket máy chủ để lấy một cổng của máy chủ và nghe các yêu cầu của máy khách. Đối tượng của đối tượng lớp ServerSocket giúp thiết lập giao tiếp với các máy khách.
>>> Đọc thêm: Lớp lồng nhau trong Java - 4 loại lớp lồng nhau bạn cần nắm rõ
Phương thức của lớp ServerSocket
STT |
Phương thức |
Mô tả |
1 |
public int getLocalPort() |
trả về cổng mà ổ cắm phía máy chủ đang nghe |
2 |
public Socket accept() throws IOException |
Trả về socket và thiết lập kết nối giữa máy chủ và khách |
3 |
public void setSoTimeout(int timeout) |
Đặt giá trị thời gian chờ cho khoảng thời gian mà ổ cắm máy chủ phải đợi máy khách trong phương thức accept() |
4 |
public void bind(SocketAddress host, int backlog) |
phương thức này liên kết socket với máy chủ và cổng được chỉ định trong đối tượng SocketAddress |
5 |
public synchronized void close() |
Đóng đối tượng của lớp ServerSocket |
Lập trình Socket phía khách trong Java
Để thực hiện lập trình phía máy khách, chúng ta cần thực hiện các bước dưới đây:
1, Tạo một Socket
2, Kết nối nó tới ServerSocket bằng cách chỉ rõ địa chỉ IP và số cổng
3, Lấy tham chiếu của OutputStream
4, Đính kèm tham chiếu này vào OutputStreamWriter
5, Viết và đóng
6, Lấy tham chiếu của InputStream
7, Đính kèm tham chiều này vào InputStreamWriter
8, Đọc và đệm
9, Phân tích cú pháp, diễn giải và xử lý
10, Đóng kết nối
>>> Đọc thêm: Java URL - Tiến trình xử lý URL trong Java cho người mới tìm hiểu
Lập trình Socket phía máy chủ trong Java
để triển khai lập trình phía máy chủ, chúng ta cần làm theo các bước sau:
1, Tạo ServerSocket
2, Kết nối nó với một số cổng
3, Đặt nó vào chế độ nghe
4, Lấy tham chiếu của InputStream
5, Đính kèm tham chiếu vào InputStreamReader
6, Đọc và đệm
7, Phân tích cú pháp theo yêu cầu
8, Chuẩn bị phản hồi
9, Lấy tham chiếu của OutputStream
10, Đính kèm tham chiếu vào OutputStreamReader
11, Viết câu trả lời
12, Đóng kết nối
Kết luận:
Lập trình Socket được sử dụng để thiết lập giao tiếp giữa hai nút trên mạng. Có hai lớp quan trọng để lập trình Socket trong Java là lớp Socket và ServerSocket. Chúng ta đã cùng tìm hiểu cả hai lớp quan trọng này với các phương thức khác.
Hy vọng bạn đã hiểu rõ hơn về socket qua bài viết này, tìm hiểu thêm về Java và các ngôn ngữ lập trình khác qua các khóa học lập trình tại T3H.