Bài giảng Lập trình mạng - Bài 3: Ống dẫn - Bùi Minh Quân

pdf 10 trang ngocly 3970
Bạn đang xem tài liệu "Bài giảng Lập trình mạng - Bài 3: Ống dẫn - Bùi Minh Quân", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_mang_bai_3_ong_dan_bui_minh_quan.pdf

Nội dung text: Bài giảng Lập trình mạng - Bài 3: Ống dẫn - Bùi Minh Quân

  1. Ống dẫn  Khái niệm  Ống dẫn trong Java  Ví dụ về ống dẫn trong Java Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 1
  2. Khái niệm về ống dẫn  Ống dẫn là gì?  Là một tiện ích được hỗ trợ trong hầu hết các hệ điều hành đa nhiệm.  Cho phép 2 quá trình trên cùng 1 máy có thể trao đổi dữ liệu với nhau.  Dữ liệu đi trên ống dẫn theo một chiều nhất định.  Xây dựng ứng dụng Client- Server bằng cách sử dụng 2 ống dẫn: Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 2
  3. Phân loại ống dẫn  Ống dẫn có tên (Named Pipe)  Cho phép hai quá trình có không gian địa chỉ khác nhau nhưng phải trên cùng một máy giao tiếp với nhau.  Giống như 1 tập tin: dữ liệu sẽ được lấy ra ở đầu tập tin và được thêm vào ở cuối tập tin.  Ống dẫn bình thường ( Normal Pipe)  Giới hạn trong phạm vi không gian địa chỉ của 1 quá trình.  Giao tiếp giữa các thread trong 1 quá trình. Java hỗ trợ Thread 1 Pipe Thread 2 ống dẫn bình thường Process Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 3
  4. Ống dẫn trong Java  Java hỗ trợ tiện ích ống dẫn thông qua hai lớp:  java.io.PipedInputStream: thừa kế từ lớp InputStream.  java.io.PipedOutputStream: thừa kế từ lớp OutputStream.  Các bước tạo ống dẫn PipedInputStream daudoc = new PipedInputStream(); PipedOutputStream daughi = new PipedOutputStream(); daudoc.connect (daughi); Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 4
  5. Ống dẫn trong Java  Sử dụng Pipe trong Java:  java.io.PipedInputStream: thừa kế từ lớp InputStream.  Có 3 phương thức read() : đọc dữ liệu từ Pipe.  Phương thưc close(): đóng pipe và giải phóng tài nguyên.  java.io.PipedOutputStream: thừa kế từ lớp OutputStream.  Có 3 phương thức write() : ghi dữ liệu vào Pipe.  Phương thưc close(): đóng pipe và giải phóng tài nguyên. write() read() Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 5
  6. Ví dụ ống dẫn trong Java  Dịch vụ phản hồi thông tin (Echo Service)  Xây dựng theo mô hình Client-Server  Server  Chờ nhận các byte gửi đến từ Client  Khi nhận byte nào sẽ gửi trả lại đúng byte đó cho Client.  Client  Gửi từng ký tự đến Server.  Nhận kết quả trả về. Xây dựng một ứng dụng có tên là PipeEcho mô phỏng dịch vụ phản hồi thông tin sử dụng Pipe làm phương tiện giao tiếp giữa các Thread trong ứng dụng. Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 6
  7. Ví dụ ống dẫn trong Java  Mô hình ứng dụng PipeEcho • Nhận các ký tự từ bàn phím. • Chờ nhận các ký tự từ Client. • Gửi chúng qua Server. • Đổi ký tự đó thành chữ HOA. • Chờ nhận các ký tự gửi về. • Gửi kết quả về cho Client. • Hiển thị ra ra màn hình. Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 7
  8. Ví dụ ống dẫn trong Java Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 8
  9. Ví dụ ống dẫn trong Java Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 9
  10. Ví dụ ống dẫn trong Java Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ 10