Bài giảng Lập trình mạng: Chương 2 - ThS. Trần Đắc Tốt

49 18 0
Bài giảng Lập trình mạng: Chương 2 - ThS. Trần Đắc Tốt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Lập trình mạng - Chương 2: Lập trình Socket hướng kết nối có cấu trúc gồm 4 phần cung cấp cho người học các kiến thức: Mô hình socket hướng kết nối, một chương trình Client đơn giản, xử lý một số vấn đề trong lập trình hướng kết nối, sử dụng C# stream với TCP. Mời các bạn cùng tham khảo.

Chương Lập trình Socket hướng kết nối Mục lục chương Mơ hình socket hướng kết nối Một chương trình Client đơn giản Xử lý số vấn đề lập trình hướng kết nối Sử dụng C# stream với TCP Mơ hình socket hướng kết nối • Mơ hình ứng dụng Client – Server hướng kết nối • Các thao tác phía server để xây dựng ứng dụng • Các thao tác phía client để xây dựng ứng dụng • Q trình truyền tin client server • Đóng kết nối Mơ hình ứng dụng Client – Server hướng kết nối Các thao tác để xây dựng ứng dụng client – server hướng kết nối - Các thao tác phía server - Các thao tác phía client - Q trình truyền nhận liệu - Đóng kết nối Mơ hình client – server hướng kết nối Các thao tác để xây dựng ứng dụng client – server hướng kết nối  Phía server: - Tạo Sockets - Gắn Sockets với địa cụ thể (binding) - Lắng nghe kết nối tới - Chấp nhận kết nối  Phía Client: - Tạo Sockets - Kết nối đến Server  Quá trình truyền nhận liệu  Đóng kết nối Các thao tác để xây dựng ứng dụng client – server hướng kết ni socket() Server bind() listen() ã socket(): Server yêu cầu tạo socket để sử dụng dịch vụ tầng vận chuyển ã bind(): Server yêu cầu gán số hiệu port cho socket ã listen(): Server lắng nghe yêu cầu nối kết từ client cổng đà đợc gán ã Server sẵn sàng phục vụ client Các thao tác để xây dựng ứng dụng client – server hướng kết nối Client socket() socket() Server bind() connect() listen() accept() ã socket(): Client yêu cầu tạo socket để sử dụng dịch vụ tầng vận chuyển ã connect(): Client gởi yêu cầu nối kết đến Server có địa IP port xác định ã accept(): Server chấp nhận nối kết Client, kênh giao tiếp ảo đợc hinh thành, Client Server trao đổi thông tin với Các thao tác để xây dựng ứng dụng client – server hướng kết nối Client Server accept() write() read() Request Message Reply Message read() write() • Sau chÊp nhËn yêu cầu nối kết, thông thờng server thực lệnh read() v ch có thông điệp yêu cầu (Request Message) từ client ã Server phân tích thực thi yêu cầu Kết đợc gởi client lệnh write() ã Sau gởi yêu cầu lệnh write(), client chờ nhận thông điệp kết (ReplyMessage) tõ server b»ng lÖnh read() Các thao tác để xây dựng ứng dụng client – server hướng kết nối Client Server accept() write() read() write() read() close() close() ã Các câu lệnh read(), write() c thc nhiều lần (ký hiệu hinh ellipse) ã Kênh ảo bị xóa Server Client đóng socket b»ng lƯnh close() Mơ hình ứng dụng client – server hướng kết nối Client socket() socket() bind() connect() listen() accept() write() read() write() read() close() close() Server • Một ví dụ việc thơng điệp khơng bảo vệ – Chương trình BadClient – Chương trình BadServer 35 Xử lý vấn đề với thơng điệp TCP • Một số phương pháp sau dùng để xử lý vấn đề – Sử dụng thơng điệp có kích thước cố định – Sử dụng kích thước thơng điệp – Sử dụng ký hiệu đánh dấu thông điệp 36 • Ví dụ sử dụng thơng điệp có kích thước cố định • Phân tích: – Phải biết trước kích thước tất cả thơng điệp – Tất cả thơng điệp phải có kích thước 37 • Ví dụ Sử dụng kích thước thơng điệp • Phân tích: – Cho phép thơng điệp có kích thước tùy ý khác 38 Sử dụng ký hiệu đánh dấu thơng điệp • Được thực thông qua sử dụng lớp C# Stream 39 Các lớp C# Stream • Bởi việc điều khiển thông điệp kết nối TCP thường phức tạp, • NET Framework cung cấp thêm lớp để trợ giúp cho việc xử lý • Các lớp bao gồm: – NetworkStream class – StreamReader class – StreamWriter class 40 Lớp NetworkStream • Lớp sử dụng để cung cấp giao diện cho Socket • Tạo đối tượng sau: Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); NetworkStream ns = new NetworkStream(newsock); 41 Các thuộc tính NetworkStream Property Description CanRead Is true if the NetworkStream supports reading CanSeek Is always false for NetworkStreams CanWrite Is true if the NetworkStream supports writing DataAvailable Is true if there is data available to be read 42 Một số phương thức NetworkStream Method Description BeginRead() Starts an asynchronous NetworkStream read BeginWrite() Starts an asynchronous NetworkStream write Close() Closes the NetworkStream object EndRead() Finishes an asynchronous NetworkStream read EndWrite() Finishes an asynchronous NetworkStream write Equals() Determines if two NetworkStreams are the same Read() Reads data from the NetworkStream ReadByte() Reads a single byte of data from the NetworkStream ToString() Returns a string representation Write() Writes data to the NetworkStream WriteByte() Writes a single byte of data to the NetworkStream 43 • Ví dụ NetworkStreamTcpClient 44 Các lớp StreamReader and StreamWriter • Các lớp dùng để đọc ghi liệu luồng vào • Sử dụng lớp với NetworkStream để tạo marker cho thơng điệp TCP 45 Hàm tạo • Hàm tạo sử dụng phổ biến là: – public StreamReader(Stream stream) – public StreamWriter(Stream stream) 46 Một số phương thức StreamReader Method Description Close() Closes the StreamReader object Read() Reads one or more bytes of data from the StreamReader ReadBlock() Reads a group of bytes from the StreamReader stream and places it in a specified buffer location ReadLine() Reads data from the StreamReader object up to and including the first line feed character ReadToEnd() Reads the data up to the end of the stream ToString() Creates a string representation of the StreamReader object 47 Một số phương thức StreamWrtiter Method Description Flush() Sends all StreamWriter buffer data to the underlying stream Write() Sends one or more bytes of data to the underlying stream WriteLine() Sends the specified data plus a line feed character to the underlying stream 48 • Ví dụ Client Server sử dụng lớp 49 ... 24 Ngoại lệ Socket • Một đặc điểm lập trình socket Net sử dụng socket exceptions • C# sử dụng the try-catch để xử lý ngoại lệ 25 • Ví dụ chương trình có sử dụng xử lý ngoại lệ 26 Một chương trình. .. • Ví dụ xây dựng chương trình Client đơn giản 27 Xử lý số vấn đề lập trình hướng kết nối • Vấn đề với đệm liệu • Vấn đề với thơng điệp TCP • Giải vấn đề với thông điệp TCP 28 Vấn đề với đệm... đề quan trọng lập trình TCP TCP khơng phân biệt ranh giới thơng điệp • Vậy làm để xử lý vấn đề này? 34 • Một ví dụ việc thông điệp không bảo vệ – Chương trình BadClient – Chương trình BadServer

Ngày đăng: 11/04/2021, 22:22

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan