intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Công nghệ lập trình tích hợp: Chương 5 - TS. Nguyễn Quang Uy

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:48

6
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Công nghệ lập trình tích hợp: Chương 5 Lập trình mạng bằng Java, cung cấp cho người đọc những kiến thức như: Lớp InetAddress; Lập trình Client – Server hướng kết nối; Lập trình Client – Server không hướng kết nối; Lập trình mạng với giao diện đồ họa; Làm việc với Internet;... Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Công nghệ lập trình tích hợp: Chương 5 - TS. Nguyễn Quang Uy

  1. Chương 5 Lập trình mạng bằng Java 1
  2. Mục lục chương • 1. Lớp InetAddress • 2. Lập trình Client – Server hướng kết nối • 3. Lập trình Client – Server không hướng kết nối • 4. Lập trình mạng với giao diện đồ họa • 5. Làm việc với Internet 2
  3. Lớp InetAdress • Lớp InetAddress cung cấp phương tiện để truy cập địa chỉ Internet cả tên máy và địa chỉ IP • Phương thức getByName() của lớp này sử dụng hệ thống tên miền (DNS) để trả lại địa chỉ Internet của một tên máy được chỉ ra 3
  4. Lớp InetAdress • Để hiển thị địa chỉ IP của máy đó ta gọi đến phương thức println(). • Phương thức println() sẽ gọi đến phương thức toString() của lớp đó • Bởi vỉ phương thức getByName() sẽ tạo ra một ngoại lệ nếu không tìm thấy tên máy được chỉ ra. Do đó ta cần Throw ngoại lệ đó hoặc xử lý nó bằng mệnh đề catch 4
  5. Ví dụ nhận địa chỉ IP của một máy • import java.net.*; • import java.util.*; • public class IPFinder { • public static void main(String[] args) { • String host; • Scanner input = new Scanner(System.in); • System.out.print("\n\nEnter host name: "); • host = input.next(); • try { • InetAddress address = InetAddress.getByName(host); • System.out.println("IP address: "+ address.toString()); • } • catch (UnknownHostException uhEx){ • System.out.println("Could not find " + host); • } • } • } 5
  6. Ví dụ nhận địa chỉ IP của máy cục bộ • import java.net.*; • public class MyLocalIPAddress • { • public static void main(String[] args) • { • try • { • InetAddress address = InetAddress.getLocalHost(); • System.out.println(address); • } • catch (UnknownHostException uhEx) • { • System.out.println("Could not find local address!"); • } • } • } 6
  7. Khái niệm Socket và Port • Socket là một khái niệm trừu tượng chứ không phải là một thành phần của phần cứng máy tính. • Socket là một điểm đầu cuối của một liên kết giữa hai tiến trình • Một socket được xác định bằng một địa chỉ IP và một số hiệu cổng (Port) • 7
  8. Khái niệm Socket và Port • Địa chỉ IP dùng để xác định máy mà socket của ta làm việc trên đó • Số hiệu cổng (port) dùng để xác định một tiến trình cụ thể của máy có chứa địa chỉ IP đó 8
  9. Xây dựng ứng dụng Client-Server hướng kết nối • Khái niệm: một ứng dụng Client-Server gồm 2 phía – Phía Client gửi yêu cầu đến Server – Phía Server đáp ứng yêu cầu của Client • Một ứng dụng Client-Server hướng kết nối bao gồm các bước – Thiết lập kết nối – Truyền dữ liệu – Hủy bỏ kết nối 9
  10. Xây dựng ứng dụng phía Server • Để thực hiện việc xây dựng ứng dụng phía Server ta cần thực hiện các bước sau: • 1. Tạo một ServerSocket: Để tạo ServerSocket ta thực hiện câu lệnh sau: – ServerSocket servSock = new ServerSocket(1234); – Sau khi thực hiện câu lệnh này, server sẽ ở trạng thái đợi kết nối đến từ Client 10
  11. Xây dựng ứng dụng phía Server • 2. Chấp nhận kết nối tới: – Sau khi được tạo ra, Server sẽ ở trạng thái đợi (Vô hạn) một kết nối từ client. – Khi có một kết nối đến, server cần chấp nhận kết nối đó. – Để chấp nhận kết nối, server sẽ gọi hàm accept, cú pháp như sau: – Socket link = servSock.accept(); – Hàm accept sẽ trả lại một đối tượng socket để làm việc với Client 11
  12. Xây dựng ứng dụng phía Server • 3. Thiết lập luồng vào ra – Sau khi thiết lập được liên kết, socket của ta đã sẵn sàng truyền và nhận dữ liệu – getInputStream và getOutputStream của lớp Socket được dùng để nhận lại tham chiếu tới các luồng dữ liệu của socket đã được tạo ra – Đối với các ứng dụng dòng lệnh ta nên chuyển kiểu của các streams sang lớp Scanner và PrintWriter. 12
  13. Xây dựng ứng dụng phía Server • 3. Thiết lập luồng vào ra – Cụ thể ta cần thực hiện các lệnh sau: – Scanner input = new Scanner(link.getInputStream()); – PrintWriter output = new PrintWriter(link.getOutputStream(),true); 13
  14. Xây dựng ứng dụng phía Server • 4. Truyền và nhận dữ liệu – Sau khi đã thiết lập các đối tượng Scanner and PrintWriter, việc truyền dữ liệu hết sức đơn gian. Ta có thể thực hiện các lệnh sau: – output.println("Awaiting data..."); – String input1 = input.nextLine(); 14
  15. Xây dựng ứng dụng phía Server • 5. Đóng kết nối – Sau khi đã kết thúc qua trình truyền dữ liệu, ta cần đóng kết nối trước khi kết thúc chương trình – link.close(); 15
  16. Xây dựng ứng dụng phía Client • Để xây dựng ứng dụng Client-Server hướng kết nối phía Client ta cần thực hiện các bước sau • 1. Thiết lập một kết nối đến Server – Để thiết lập kết nối đến Server ta cần tạo ra một đối tượng của lớp Socket, cung cấp cho nó hai tham số • Địa chỉ IP của server • Số hiệu cổng mà server đang lắng nghe 16
  17. Xây dựng ứng dụng phía Client • 1. Thiết lập một kết nối đến Server – Nếu cả client và server đều nằm trên cùng một máy, ta có thể gọi hàm getLocalHost. Ta thực hiện lệnh sau: – Socket link = new Socket(InetAddress.getLocalHost(),1234); 17
  18. Xây dựng ứng dụng phía Client • 2. Thiết lập luồng vào ra – Bước này tương tự phía server – Ta gọi các hàm getInputStream và getOutputStream của lớp socket để thực hiện thao tác này 18
  19. Xây dựng ứng dụng phía Client • 3. Truyền nhận dữ liệu – Bước này cũng tương tự phía server – Đối tượng Scanner sẽ nhận dữ liệu được gửi bời đối tượng PrintWriter và ngược lại – Trong khi đó đối tượng PrintWriter của client sẽ gửi dữ liệu đến server và được nhận bởi đối tượng Scanner thông qua phương thức nextLine 19
  20. Xây dựng ứng dụng phía Client • 4. Đóng kết nối – Tương tự phía Server – Gọi phương thức close của lớp Socket 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2