Bài giảng Lập trình mạng Java: Chương 3 - ThS. Nguyễn Minh Thành
lượt xem 7
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình mạng Java: Chương 3 - ThS. Nguyễn Minh Thành
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình mạng
119 p | 1921 | 1059
-
Bài giảng Lập trình mạng: Lập trình Socket với Java - TS. Nguyễn Hoài Sơn
44 p | 152 | 30
-
Bài giảng Lập trình mạng: Phần 1
75 p | 157 | 24
-
Bài giảng Lập trình mạng với Java
66 p | 148 | 21
-
Bài giảng Lập trình mạng: Chương 2 - ĐH Công nghệ Đồng Nai
65 p | 77 | 8
-
Bài giảng Lập trình mạng: Chương 0 - ĐH Công nghệ Đồng Nai
4 p | 106 | 7
-
Bài giảng Lập trình mạng: Chapter 4 - Nguyễn Thị Thanh Vân
87 p | 67 | 7
-
Bài giảng Lập trình mạng: Java remote method invocation - GV. Nguyễn Xuân Vinh
26 p | 74 | 7
-
Bài giảng Lập trình mạng: Chapter 3 - Nguyễn Thị Thanh Vân
93 p | 83 | 6
-
Bài giảng Lập trình mạng: Giới thiệu sơ lược về ngôn ngữ Java - Bùi Minh Quân
54 p | 76 | 6
-
Bài giảng Lập trình mạng - Chương 2: Giới thiệu sơ lược về ngôn ngữ Java
54 p | 80 | 6
-
Bài giảng Lập trình mạng: Ống dẫn - Bùi Minh Quân
10 p | 65 | 5
-
Bài giảng Lập trình mạng: Java - Nguyễn Hữu Thể
43 p | 46 | 5
-
Bài giảng Lập trình mạng: Giới thiệu một số thư viện hàm bằng Java hỗ trợ xây dựng ứng dụng mạng - Bùi Minh Quân
21 p | 88 | 5
-
Bài giảng Lập trình mạng: Chapter 2 - Nguyễn Thị Thanh Vân
35 p | 77 | 4
-
Bài giảng Lập trình mạng: Chương 2 - Phạm Trần Vũ
38 p | 80 | 4
-
Bài giảng Lập trình mạng Java: Chương 0 - ThS. Nguyễn Minh Thành
8 p | 71 | 3
-
Bài giảng Lập trình mạng - Chương 3: Ống dẫn
10 p | 79 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn