Lập Trình Mạng Với Java
--- Bài mới hơn ---
Thuật ngữ lập trình mạng với java đề cập đến việc viết các chương trình thực hiện trên nhiều thiết bị (máy tính), trong đó các thiết bị được kết nối với nhau.
Gói chúng tôi của J2SE APIs chứa một tập hợp các lớp và giao tiếp cung cấp giao thức truyền thông ở mức độ thấp.
Gói chúng tôi cung cấp hỗ trợ cho hai giao thức mạng phổ biến sau:
- TCP – TCP là viết tắt của Transmission Control Protocol. TCP thường được sử dụng qua giao thức Internet (Internet Protocol), được gọi là TCP/IP. Giao thức này cho phép giao tiếp tin cậy giữa hai ứng dụng.
- UDP – UDP là viết tắt của User Datagram Protocol, một giao thức cho phép truyền dữ liệu giữa các ứng dụng. Giao thức này không kiểm tra đến việc gói tin đã được gửi hay chưa, nên đây là giao tiếp không tin cậy giữa hai hoặc nhiều ứng dụng.
TCP và UDP là các giao thức cốt lõi của việc kết nối các thiết bị công nghệ với nhau. Ngoài ra, trong việc lập trình mạng với java chúng ta có thể sử dụng FTP, công nghệ J2EE…
Lập trình Socket
Socket cung cấp cơ chế truyền thông giữa hai máy tính sử dụng TCP. Một máy khách tạo ra socket để kết nối đến với máy chủ.
Lớp java.net.Socket đại diện cho một socket, và lớp java.net.ServerSocket cung cấp một cơ chế cho chương trình máy chủ để lắng nghe khách hàng và thiết lập kết nối với chúng.
Các bước thiết lập kết nối TCP giữa hai máy tính sử dụng socket:
- Máy chủ khởi tạo một đối tượng ServerSocket với một cổng giao tiếp (port).
- Máy chủ gọi phương thức accept() của lớp ServerSocket. Phương pháp này đợi cho đến khi một máy khách kết nối đến máy chủ trên cổng đã cho.
- Trong khi máy chủ đang chờ đợi, một máy khách khởi tạo đối tượng Socket, xác định tên máy chủ (IP hoặc domain) và số cổng để kết nối.
- Đối tượng socket của máy khách cố gắng kết nối máy khách tới máy chủ đã chỉ định và số cổng. Nếu truyền thông được thiết lập, máy khách bây giờ có một đối tượng socket có khả năng giao tiếp với máy chủ.
- Ở phía máy chủ, phương thức accept() trả về một tham chiếu đến một socket mới trên máy chủ được kết nối với socket của máy khách.
Sau khi kết nối được thiết lập, máy chủ và máy khách có thể truyền và nhận thông tin thông qua OutputStream và InputStream.
Lớp ServerSocket
Lớp java.net.ServerSocket được sử dụng bởi các ứng dụng máy chủ để tạo ra một một cổng và lắng nghe các yêu cầu của máy khách.
Các Constructor của lớp ServerSocket
Nếu Constructor ServerSocket không ném một ngoại lệ, có nghĩa là bạn đã khởi tạo thành công ServerSocket với cổng được chỉ định và đã sẵn sàng cho các yêu cầu của máy khách.
Các phương thức của lớp ServerSocket
Khi ServerSocket gọi accept(), phương thức này sẽ không return cho đến khi một client kết nối đến. Sau khi máy khách (client) kết nối, ServerSocket tạo một Socket mới trên một cổng không xác định và trả về một tham chiếu đến Socket mới này. Hiện kết nối TCP giữa máy khách và máy chủ và có thể truyền tin.
Lớp Socket
Lớp java.net.Socket đại diện cho socket mà cả máy khách và máy chủ sử dụng để liên lạc với nhau. Máy khách nhận được một đối tượng Socket bằng cách khởi tạo một, trong khi máy chủ lấy một đối tượng Socket từ giá trị trả về của phương thức accept().
Các Constructor của lớp Socket
Lớp Socket có năm Constructor mà một máy khách sử dụng để kết nối với một máy chủ như sau:
Các phương thức của lớp Socket
Các phương thứ của lớp InetAddress
Ví dụ về lập trình socket
Ví dụ về Socket Client
ClientExample sau đây là một chương trình client kết nối đến một server bằng cách sử dụng một socket và gửi một lời chào, và sau đó chờ đợi cho một đáp ứng từ máy chủ.
package vn.viettuts.client; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class ClientExample { /** * main * * @author viettuts.vn * @param args : server name and server port */ public static void main(String; int port = Integer.parseInt(args args) { int port = Integer.parseInt(args 6677
--- Bài cũ hơn ---