Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 237 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
237
Dung lượng
4,36 MB
Nội dung
TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THỰC PHẨM TP.HCM LẬP TRÌNH MẠNG (Network programming) Giảng viên: Ths Trần Đắc Tốt – Khoa CNTT Email: tottd@cntp.edu.vn Website: www.oktot.com Facebook: https://www.facebook.com/oktotcom/ Chương 1: Những vấn đề lập trình mạng MƠN HỌC: LẬP TRÌNH MẠNG Chương 1: Những vấn đề lập trình mạng Chương 2: Lập trình SOCKET hướng kết nối Chương 3: Lập trình SOCKET phi kết nối Chương 4: Sử dụng lớp trợ giúp C# SOCKET Chương 5: Lập trình đa luồng (MULTI-THREADING) Chương 1: Những vấn đề lập trình mạng CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ BẢN CỦA LẬP TRÌNH MẠNG Cơ mạng máy tính Mơ hình truyền thơng Các mơ hình tham chiếu Tổng quan lập trình mạng Chương 1: Những vấn đề lập trình mạng MỤC ĐÍCH – U CẦU Mục đích: Giới thiệu khái niệm Mạng máy tính, truyền thơng mạng máy tính Mơ hình OSI, TCP/IP Windows Socket Lập trình Socket C# Các lớp DNS C# Yêu cầu: Sinh viên nắm vững khái niệm Lập trình mạng Sử dụng socket lập trình mạng Chương 1: Những vấn đề lập trình mạng CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ BẢN CỦA LẬP TRÌNH MẠNG Cơ mạng máy tính Mơ hình truyền thơng Các mơ hình tham chiếu Tổng quan lập trình mạng Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Khái niệm mạng máy tính Tập hợp máy tính thiết bị mạng kết nối với theo kiến trúc để trao đổi liệu Máy tính: máy trạm, máy chủ, định tuyến, switch Kết nối phương tiện truyền thơng Theo kiến trúc Các dạng máy tính ? Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Internet ngày Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Xử lý tập trung hay phân tán Chương 1: Những vấn đề lập trình mạng Cơ mạng máy tính Kiến trúc mạng: Hình trạng (topology) giao thức (protocol) Trục (Bus) Vòng (Ring) Sao (Star) Thực tế kết hợp nhiều hình trạng Chương 1: Những vấn đề lập trình mạng 10 Sử dụng thread cho việc truyền nhận liệu • Cùng với hỗ trợ cho việc kết nối nhiều Client, thread sử dụng mà khơng có mơ hình giao thức rõ ràng sử dụng • Một vấn đề ví dụ trước biết Client Server biết xác chúng nhận truyền liệu 18 Sử dụng thread cho việc truyền nhận liệu • Tuy nhiên điều khơng ứng dụng thực tế • Chẳng hạn chương trình chat bên nhận khơng biết xác bên gửi gửi liệu 19 Sử dụng thread cho việc truyền nhận liệu • Để giải vấn đề ta cần sử dụng Thread cách tạo thread thứ cấp chuyên để xử lý việc gửi nhận liệu 20 Sơ đồ sử dụng thread cho chương trình chat 21 Ví dụ chương trình chat • Vi dụ: TcpChat.cs • Ví dụ vừa có chức Client vừa có chức Server 22 Ví dụ chương trình chat • Khi người sử dụng click vào nút lệnh Listen, socket tạo lắng nghe kết nối tới • Khi có kết nối tới, phương thức AcceptConn() tạo socket chuyển đến thread thứ cấp 23 Test chương trình chat • Để test chương trình chat ta cần có copy chạy đồng thời • Khi chạy chương trình ta chat • Sử dụng chương trinh ListThreads ta quan sát thấy thread tạo 24 Thread Pool • Việc tạo nhiều thread có kết nối đến làm chậm thời gian thực chương trình • Để khắc phục tình trạng ta dùng thread pool 25 Lớp ThreadPool • Lớp ThreadPool chứa System.Threading namespace • Lớp ThreadPool gán ủy thác tới threads thread pool • Tất phương thức lớp ThreadPool phương thức tĩnh, hàm tạo khơng sử dụng 26 Các phương thức lớp ThreadPool Method Description BindHandle() Binds an operating system handle to the thread pool GetAvailableThreads() Gets the number of worker threads available for use in the thread pool GetMaxThreads() Gets the maximum number of worker threads available in the thread pool QueueUserWorkItem() Queues a user delegate to the thread pool RegisterWaitForSingleObject() Registers a delegate waiting for a WaitHandle object UnsafeQueueUserWorkItem() Queues an unsafe user delegate to the thread pool but does not propagate the calling stack onto the worker thread UnsafeRegisterWaitForSingleObject() Registers an unsafe delegate waiting for a WaitHandle object 27 Đăng ký • Để đăng ký ủy quyền cho việc sử dụng thread thread pool ta dùng cú pháp sau: – ThreadPool.QueueUserWorkItem(new WaitCallback(Counter)); – Biến Counter ủy thác phương thức chạy thread 28 Ví dụ sử dụng ThreadPool • Ví dụ: ThreadPoolSample.cs • Test ví dụ threadpool 29 Sử dụng ThreadPool Server • Đối với server mà có client kết nối đến lúc (