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

Bài giảng Lập trình mạng Java: Chương 3 - ThS. Nguyễn Minh Thành

Chia sẻ: You Can | Ngày: | Loại File: PDF | Số trang:58

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

Chương 3 trang bị cho người học những kiến thức liên quan đến Mô hình Client-Server và lập trình socket. Trong chương này người học sẽ tìm hiểu các nội dung: Mô hình client – server, mô hình truyền tin socket, lập trình socket hướng kết nối, lập trình socket phi kết nối. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình mạng Java: Chương 3 - ThS. Nguyễn Minh Thành

  1. Chương 3: Mô Hình Client-Server & Lập Trình Socket GIẢNG VIÊN : THS. NGUYỄN MINH THÀNH EMAIL : THANHNM@ITC.EDU.VN
  2. Nội Dung 1. Mô hình client – server 2. Mô hình truyền tin socket 3. Lập trình socket hướng kết nối 4. Lập trình socket phi kết nối MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 2
  3. 1. Mô Hình Client/Server Mô Hình Client/Server  Gồm có một chương trình đóng vai trò là client và một chương trình đóng vai trò là server. Hai chương trình này sẽ giao tiếp với nhau thông qua mạng. Chương trình server đóng vai trò cung cấp dịch vụ. Chương trình này luôn luôn lắng nghe các yêu cầu từ phía client, rồi tính toán và đáp trả kết quả tương ứng. Chương trình client cần một dịch vụ và gởi yêu cầu dịch vụ tới chương trình server và đợi đáp trả từ server. MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 3
  4. 1. Mô Hình Client/Server Mô Hình Client/Server (tt) Quá trình trao đổi dữ liệu giữa Client và Server  Truyền một yêu cầu từchương trình client tới chương trình server  Yêu cầu được server xửlý  Truyền đáp ứng cho client MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 4
  5. 1. Mô Hình Client/Server Các Kiến Trúc Client/Server Client/Server hai tầng  Tầng ứng dụng (client)  Tầng lưu trữ dữ liệu (server) Đặc điểm kiến trúc 2 tầng  công việc xử lý được dành cho phía client  server chỉ đóng vai trò kiểm soát luồng vào ra giữa ứng dụng và dữ liệu Nhược điểm  Toàn bộ ứng dụng được xử lý trên client  Không tận dụng được hết khả năng của server  Truyền tải dữ liệu giữa client và server nhiều MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 5
  6. 1. Mô Hình Client/Server Các Kiến Trúc Client/Server Client/Server 3 tầng  Tầng trình diễn (client)  Tầng lưu trữ dữ liệu (data server)  Tầng xử lý dữ liệu trung tâm (Application server) MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 6
  7. 2. Lập Trình Mạng với Socket Lập Trình Mạng với Socket  Trong mô hình TCP/IP, các chương trình client và server thường sử dụng các giao thức ở tầng ứng dụng và tầng vận chuyển để truyền thông dữ liệu cho nhau. Các giao thức còn lại chủ yếu nằm ở phần cứng mạng như card mạng, switch,….  2 giao thức chính được dùng trong lập trình Socket là : TCP và UDP MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 7
  8. 2. Lập Trình Mạng với Socket Khái niệm về Socket  Socket  Đối tượng nằm giữa chương trình với 2 giao thức vận chuyển TCP và UDP. ◦ Một giao diện lập trình mạng để giao tiếp với các giao thức TCP và UDP. ◦ Lập trình viên không sử dụng trực tiếp giao thức TCP và UDP MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 8
  9. 2. Lập Trình Mạng với Socket Khái niệm về Socket (tt)  Có 3 loại socket  Socket hướng kết nối (TCP Socket)  Socket không hướng kết nối (UDP Socket)  Raw socket MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 9
  10. 2. Lập Trình Mạng với Socket Lý do sử dụng Socket Tại sao lập trình viên không sử dụng trực tiếp giao thức TCP và UDP để truyền tin ?  Dữ liệu được truyền trên mạng Internet dưới dạng các gói có kích thước hữu hạn được gọi là datagram.  Mỗi datagram chứa một header và một payload. Header chứa địa chỉ và cổng cần truyền gói tin đến, cũng như địa chỉ và cổng xuất phát của gói tin, và các thông tin khác được sử dụng để đảm bảo độ tin cậy truyền tin, payload chứa dữ liệu.  Tuy nhiên do các datagram có chiều dài hữu hạn nên thường phải phân chia dữliệu thành nhiều gói và khôi phục lại dữliệu ban đầu từcác gói ởnơi nhận.  Trong quá trình truyền tin có thểcó một hay nhiều gói bịmất hay bịhỏng và cần phải truyền lại hoặc các gói tin đến không theo đúng trình tự.  việc phân chia dữliệu thành các gói, tạo các header, phân tích header của các gói đến, quản lý danh sách các gói đã nhận được và các gói chưa nhận được, ... rất nhiều công việc cần phải thực hiện, và đòi hỏi rất nhiều phần mềm phức tạp. MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 10
  11. 2. Lập Trình Mạng với Socket Lý do sử dụng Socket (tt) Các Socket che dấu người lập trình khỏi các chi tiết mức thấp của mạng như kiểu đường truyền, các kích thước gói, yêu cầu truyền lại gói, các địa chỉ mạng... Chúng cho phép người lập trình xem một liên kết mạng nhưlà một luồng mà có thể đọc dữ liệu ra hay ghi dữliệu vào từ luồng này. MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 11
  12. 2. Lập Trình Mạng với Socket Các Thao Tác cơ bản trên Socket Kết nối với một máy ở xa Gửi dữ liệu Nhận dữ liệu Ngắt liên kết Gán cổng Nghe dữ liệu đến Chấp nhận liên kết từ các máy ở xa trên cổng đã được gán MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 12
  13. 3. Lập Trình Socket hướng kết nối Socket hướng kết nối (TCP socket)  Lập trình socket hướng kết nối sử dụng giao thức TCP để thành lập phiên làm việc giữa client và server.  Cần thực hiện đàm phán kết nối trước khi thực hiện truyền dữ liệu.  Việc thực hiện truyền dữ liệu có sự tin tưởng tuyệt đối. MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 13
  14. 3. Lập Trình Socket hướng kết nối Đặc Điểm của TCP Socket Có một đường kết nối ảo giữa 2 tiến trình Một trong 2 tiến trình phải đợi tiến trình kia yêu cầu kết nối Có thể sử dụng liên lạc theo mô hình client/server Trong mô hình Client/Server thì Server lắng nghe và chấp nhận một yêu cầu kết nối Mỗi thông điệp gửi đều có xác nhận trở về Các gói tin chuyển đi tuần tự Độ tin cậy truyền tin cao nhưng tốc độ bị hạn chế MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 14
  15. 3. Lập Trình Socket hướng kết nối Mô Hình Truyền Thông của TCP Socket  Các thao tác thực thiện trong kết nối TCP Socket MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 15
  16. 3. Lập Trình Socket hướng kết nối Thiết kế giải thuật cho Server  Sử dụng đối tượng ServerSocket Các bước thực hiện của một ServerSocket  Bước 1 : Tạo một đối tượng ServerSocket  Bước 2: Tạo một đối tượng Socket bằng cách chấp nhận liên kết từ yêu cầu liên kết của client. Sau khi chấp nhận liên kết, phương thức accept() trả về đối tượng Socket thể hiện liên kết giữa Client và Server.  Bước 3: Tạo một luồng nhập để đọc dữ liệu từ client  Bước 4: Tạo một luồng xuất để gửi dữ liệu trở lại cho server  Bước 5: Thực hiện các thao tác vào ra với các luồng nhập và luồng xuất  Bước 6: Đóng socket s khi đã truyền tin xong. Việc đóng socket cũng đồng nghĩa với việc đóng các luồng. MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 16
  17. 3. Lập Trình Socket hướng kết nối Lập Trình TCP Socket phía Server Phương thức khởi tại ServerSocket  public ServerSocket(int port) throws IOException, BindException  Constructor này tạo một socket cho server trên cổng xác định. Nếu port bằng 0, hệ thống chọn một cổng ngẫu nhiên cho ta. Cổng do hệ thống chọn đôi khi được gọi là cổng vô danh vì ta không biết số hiệu cổng. Với các server, các cổng vô danh không hữu ích lắm vì các client cần phải biết trước cổng nào mà nó nối tới  Ví dụ : để khởi tạo Server lắng nghe cổng 80 try{ ServerSocket server = new ServerSocket(80); } catch(IOException e) { System.err.println(e); } MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 18
  18. 3. Lập Trình Socket hướng kết nối Lập Trình TCP Socket phía Server Phương thức khởi tại ServerSocket  public ServerSocket(int port, int queuelength, InetAddress bindAddress)throws IOException  Constructor này tạo một đối tượng ServerSocket trên cổng xác định với chiều dài hàng đợi xác định. ServerSocket chỉ gán cho địa chỉ IP cục bộ xác định.  Constructor này hữu ích cho các server chạy trên các hệ thống có nhiều địa chỉ IP. MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 19
  19. 3. Lập Trình Socket hướng kết nối Lập Trình TCP Socket phía Server Chấp nhận và ngắt liên kết  public Socket accept() throws IOException  Khi bước thiết lập liên kết hoàn thành, và ta sẵn sàng để chấp nhận liên kết, cần gọi phương thức accept() của lớp ServerSocket.  Phương thức này phong tỏa; nó dừng quá trình xử lý và đợi cho tới khi client được kết nối.  Khi client thực sự kết nối, phương thức accept() trả về đối tượng Socket.  Sau khi kết nối, ta sử dụng các phương thức getInputStream() và getOutputStream() để truyền tin với client. MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 20
  20. 3. Lập Trình Socket hướng kết nối Lập Trình TCP Socket phía Server Chấp nhận và ngắt liên kết (tt)  Ví dụ try{ ServerSocket theServer = new ServerSocket(5776); while(true) { Socket con = theServer.accept(); PrintStream p = new PrintStream(con.getOutputStream()); p.println(“Ban da ket noi toi server nay. Bye-bye now.”); con.close(); } } catch(…){…} MÔ HÌNH CLIENT-SERVER & LẬP TRÌNH SOCKET 21
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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