Lập trình mạng Socket - Lập trình mạng Socket trong Java - 155 bài học Java miễn phí hay nhất PDF

11 241 0
Lập trình mạng Socket - Lập trình mạng Socket trong Java - 155 bài học Java miễn phí hay nhất PDF

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

http://vietjack.com/java/index.jsp Copyright © vietjack.com Lập trình mạng (Networking) Java Khái niệm lập trình mạng (network programming) nói viết chương trình mà thực thi qua nhiều thiết bị (máy tính), thiết bị kết nối mạng với Để hiểu sâu khái niệm trình bày chương này, mời bạn tham khảo loạt bài: Ví dụ Lập trình mạng (Networking) Java Gói java.net J2SE API chứa tập hợp class interface mà cung cấp chi tiết giao tiếp tầm thấp, cho phép bạn viết chương trình mà trọng tâm vào giải vấn đề tầm tay Gói java.net cung cấp hỗ trợ cho hai giao thức mạng phổ biến:  TCP: TCP viết tắt Transmission Control Protocol, cho phép giao tiếp đáng tin cậy hai ứng dụng TCP đặc trưng sử dụng qua Internet Protocol, xem TCP/IP  UDP: UDP viết tắt User Datagram Protocol, giao thức connection-less, cho phép gói nhỏ liệu truyền tải ứng dụng Chương giúp bạn hiểu sâu hai chủ đề Java:  Lập trình Socket: Đây khái niệm sử dụng rộng rãi lập trình mạng giải thích chi tiết  Tiến trình URL: Nó trình bày riêng Bạn click vào link sau để học Tiến trình URL Java Lập trình Socket Java Các Socket cung cấp kỹ thuật giao tiếp hai máy tính sử dụng TCP Một chương trình Client tạo socket đầu cuối giao tiếp cố gắng để kết nối socket tới Server Khi kết nối tạo, Server tạo đối tượng Socket đầu cuối giao tiếp Client Server giao tiếp việc đọc ghi từ Socket Lớp java.net.Socket biểu diễn Socket, lớp java.net.ServerSocket cung cấp kỹ thuật cho chương trình Server để nghe thơng tin từ Client thành lập kết nối với chúng http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com Các bước sau xảy thành lập kết nối TCP hai máy tính sử dụng Socket:  Server thuyết minh đối tượng ServerSocket, biểu thị số hiệu cổng (port) để xuất giao tiếp  Server gọi phương thức accept() lớp ServerSocket Phương thức đợi tới Client kết nối với Server cổng cho  Sau Server đợi, Client khởi tạo đối tượng Socket, xác định tên Server số hiệu cổng để kết nối tới  Constructor lớp Socket cố gắng để kết nối Client tới Server số hiệu cổng xác định Nếu giao tiếp thành lập, Client có đối tượng Socket có khả giao tiếp với Server  Trên Server-side, phương thức accept() trả tham chiếu tới socket Server mà kết nối với socket Client Sau kết nối thành lập, giao tiếp xảy sử dụng I/O stream Mỗi Socket có OutputStream InputStream OutputStream Client kết nối với InputStream Server, InputStream Client kết nối với OutputStream Server TCP giao thức giao tiếp hai chiều, liệu gửi qua hai luồng thời điểm Các lớp hữu ích sau cung cấp đầy đủ phương thức để triển khai Socket Các phương thức lớp ServerSocket Java Lớp java.net.ServerSocket Java sử dụng ứng dụng Server để thu nhận cổng nghe yêu cầu từ Client Lớp ServerSocket có constructor sau: STT Phương thức miêu tả public ServerSocket(int port) throws IOException Cố gắng để tạo Server Socket giới hạn với số hiệu cổng xác định Một http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com exception xuất cổng thuộc phạm vi ứng dụng khác public ServerSocket(int port, int backlog) throws IOException Tương tự constructor trước, tham số backlog xác định có Client vào để lưu giữ trogn hàng đợi (wait queue) public ServerSocket(int port, int backlog, InetAddress address) throws IOException Tương tự constructor trước, tham số InetAddress xác định địa IP nội để kết nối tới InetAddress sử dụng cho Server mà có nhiều địa IP, cho phép Server xác định địa IP để chấp nhận yêu cầu Client public ServerSocket() throws IOException Tạo Server Socket không giới hạn Khi sử dụng constructor này, sử dụng phương thức bind() bạn kết nối với Server Socket Nếu ServerSocket constructor không ném exception, nghĩa ứng dụng bạn thành công kết nối tới cổng xác định sẵn sàng cho yêu cầu Client Bảng liệt kê phương thức phổ biến lớp ServerSocket Java: STT Phương thức miêu tả public int getLocalPort() Trả cổng mà Server Socket nghe Phương thức hữu dụng bạn truyền số hiệu cổng constructor để Server tìm cổng cho bạn public Socket accept() throws IOException Đợi cho Client đến Phương thức block tới Client kết nối tới Server cổng xác định Socket trễ (timeout), giả sử giá trị time-out thiết lập với phương thức setSoTimeout() Nếu khơng thì, phương thức http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com block vơ hạn public void setSoTimeout(int timeout) Thiết lập giá trị timeout cho Server Socket đợi Client bao lâu, phương thức accept() gọi public void bind(SocketAddress host, int backlog) Nối kết Socket tới Server cổng xác định đối tượng SocketAddress Sử dụng phương thức bạn thuyết minh đối tượng ServerSocket với constructor khơng có tham số Khi ServerSocket gọi phương thức accept(), phương thức không trả giá trị tới Client kết nối Sau Client kết nối, ServerSocket tạo Socket cổng chưa xác định trả tham chiếu tới Socket Bây giờ, kết nối TCP tồn Client Server, giao tiếp bắt đầu Các phương thức lớp Socket Java Lớp java.net.Socket biểu diễn socket mà Client Server sử dụng để kết nối với Client thu nhận đối tượng Socket việc thuyết minh nó, Server thu nhận đối tượng Socket từ giá trị trả phương thức accept() Lớp Socket có constructor mà Client sử dụng để kết nối tới Server: STT Phương thức Miêu tả public Socket(String host, int port) throws UnknownHostException, IOException Phương thức cố gắng kết nối tới Server xác định cổng xác định Nếu constructor không ném exception, kết nối thành công Client kết nối tới Server public Socket(InetAddress host, int port) throws IOException Phương thức tương tự constructor trước, ngoại trừ host biểu thị đối http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com tượng InetAddress public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException Kết nối tới host cổng xác định, tạo Socket host nội địa cổng xác định public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException Phương thức tương tự constructor trước, ngoại trừ host biểu thị đối tượng InetAddress thay String public Socket() Tạo Socket rời rạc Sử dụng phương thức connect() để kết nối Socket tới Server Khi Socket constructor trả giá trị, khơng đơn giản khởi tạo đối tượng Socket mà thực cố gắng kết nối tới Server cổng xác định Một số phương thức lớp Socket đáng quan tâm liệt kê Chú ý rằng, Server Client có đối tượng Socket, phương thức gọi Client Server STT Phương thức Miêu tả public void connect(SocketAddress host, int timeout) throws IOException Phương thức kết nối Socket tới host xác định Phương thức cần thiết bạn thuyết minh Socket sử dụng constructor khơng có tham số public InetAddress getInetAddress() Phương thức trả địa máy tính khác mà Socket kết nối tới http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com public int getPort() Trả cổng mà Socket kết nối thiết bị từ xa public int getLocalPort() Trả cổng mà Socket kết nối thiết bị nội public SocketAddress getRemoteSocketAddress() Trả địa Socket từ xa public InputStream getInputStream() throws IOException Trả input stream Socket Input stream kết nối tới output stream Socket từ xa public OutputStream getOutputStream() throws IOException Trả output stream Socket Output stream kết nối tới input stream Socket từ xa public void close() throws IOException Đóng Socket, mà làm đối tượng Socket khơng khả kết nối lại với Server Các phương thức lớp InetAddress Java Lớp biểu diễn địa Internet Protocol (IP) Dưới liệt kê số phương thức hữu ích mà bạn cần lập trình Socket STT Phương thức Miêu tả static InetAddress getByAddress(byte[] addr) Trả đối tượng InetAddress cung cấp địa IP thô http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com static InetAddress getByAddress(String host, byte[] addr) Tạo InetAddress dựa tên host địa IP cung cấp static InetAddress getByName(String host) Xác định địa IP host, cung cấp tên host String getHostAddress() Trả chuỗi địa IP dạng biểu diễn nguyên văn String getHostName() Nhận tên host cho địa IP static InetAddress InetAddress getLocalHost() Trả host nội String toString() Biến đổi địa IP thành String Ví dụ Socket Client Java GreetingClient sau chương trình Client kết nối tới Server sử dụng Socket gửi lời chào, sau đợi phản hồi // File Name GreetingClient.java import java.net.*; import java.io.*; public class GreetingClient { public static void main(String [] args) { http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com String serverName = args[0]; int port = Integer.parseInt(args[1]); try { System.out.println("Connecting to " + serverName + " on port " + port); Socket client = new Socket(serverName, port); System.out.println("Just connected to " + client.getRemoteSocketAddress()); OutputStream outToServer = client.getOutputStream(); DataOutputStream out = new DataOutputStream(outToServer); out.writeUTF("Hello from " + client.getLocalSocketAddress()); InputStream inFromServer = client.getInputStream(); DataInputStream in = new DataInputStream(inFromServer); System.out.println("Server says " + in.readUTF()); client.close(); }catch(IOException e) { e.printStackTrace(); } } } Ví dụ Socket Server Java Chương trình GreetingServer sau ví dụ ứng dụng Server sử dụng lớp Socket để lắng nghe Client số hiệu cổng xác định tham số dòng lệnh // File Name GreetingServer.java import java.net.*; http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com import java.io.*; public class GreetingServer extends Thread { private ServerSocket serverSocket; public GreetingServer(int port) throws IOException { serverSocket = new ServerSocket(port); serverSocket.setSoTimeout(10000); } public void run() { while(true) { try { System.out.println("Waiting for client on port " + serverSocket.getLocalPort() + " "); Socket server = serverSocket.accept(); System.out.println("Just connected to " + server.getRemoteSocketAddress()); DataInputStream in = new DataInputStream(server.getInputStream()); System.out.println(in.readUTF()); DataOutputStream out = new DataOutputStream(server.getOutputStream()); out.writeUTF("Thank you for connecting to " + server.getLocalSocketAddress() + "\nGoodbye!"); server.close(); }catch(SocketTimeoutException s) { http://vietjack.com/ Trang chia sẻ học online miễn phí Page http://vietjack.com/java/index.jsp Copyright © vietjack.com System.out.println("Socket timed out!"); break; }catch(IOException e) { e.printStackTrace(); break; } } } public static void main(String [] args) { int port = Integer.parseInt(args[0]); try { Thread t = new GreetingServer(port); t.start(); }catch(IOException e) { e.printStackTrace(); } } } Biên dịch Client Server sau bắt đầu Server sau: $ java GreetingServer 6066 Waiting for client on port 6066 Kiểm tra chương trình Client sau: $ java GreetingClient localhost 6066 Connecting to localhost on port 6066 Just connected to localhost/127.0.0.1:6066 Server says Thank you for connecting to /127.0.0.1:6066 Goodbye! http://vietjack.com/ Trang chia sẻ học online miễn phí Page 10 http://vietjack.com/java/index.jsp http://vietjack.com/ Trang chia sẻ học online miễn phí Copyright © vietjack.com Page 11 ... phương thức để triển khai Socket Các phương thức lớp ServerSocket Java Lớp java. net.ServerSocket Java sử dụng ứng dụng Server để thu nhận cổng nghe yêu cầu từ Client Lớp ServerSocket có constructor... phương thức lớp Socket Java Lớp java. net .Socket biểu diễn socket mà Client Server sử dụng để kết nối với Client thu nhận đối tượng Socket việc thuyết minh nó, Server thu nhận đối tượng Socket từ giá... Ví dụ Socket Client Java GreetingClient sau chương trình Client kết nối tới Server sử dụng Socket gửi lời chào, sau đợi phản hồi // File Name GreetingClient .java import java. net.*; import java. io.*;

Ngày đăng: 02/12/2017, 23:59

Từ khóa liên quan

Mục lục

  • Lập trình mạng (Networking) trong Java

    • Lập trình Socket trong Java

    • Các phương thức lớp ServerSocket trong Java

    • Các phương thức lớp Socket trong Java

    • Các phương thức lớp InetAddress trong Java

    • Ví dụ về Socket Client trong Java

    • Ví dụ về Socket Server trong Java

Tài liệu cùng người dùng

Tài liệu liên quan