Danh mục

Giáo trình Lập trình mạng: Phần 2 - Trường Đại học Phan Thiết

Số trang: 99      Loại file: pdf      Dung lượng: 1.39 MB      Lượt xem: 16      Lượt tải: 0    
tailieu_vip

Phí tải xuống: 1,000 VND Tải xuống file đầy đủ (99 trang) 0
Xem trước 10 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tiếp nội dung phần 1, Giáo trình Lập trình mạng: Phần 2 cung cấp cho người học những kiến thức như: Sử dụng các lớp helper của C# socket; đa nhiệm tiểu trình; đồng bộ hóa; lập trình socket bất đồng bộ. Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Giáo trình Lập trình mạng: Phần 2 - Trường Đại học Phan Thiết Khoa Công Nghệ Thông Tin Giáo trình Lập Trình Mạng CHƢƠNG IV: SỬ DỤNG CÁC LỚP HELPER CỦA C# SOCKET IV.1. Lớp TCP Client Lớp TcpClient nằm ở namespace System.Net.Sockets đƣợc thiết kế để hỗ trợ cho việc viết các ứng dụng TCP Client đƣợc dễ dàng. Lớp TcpClient cho phép tạo ra một đối tƣợng Tcp Client sử dụng một trong ba phƣơng thức tạo lập sau: TcpClient(): là phƣơng thức tạo lập đầu tiên, đối tƣợng đƣợc tạo ra bởi phƣơng thức tạo lập này sẽ gắn kết với một địa chỉ cục bộ và một port TCP ngẫu nhiên. Sau khi đối tƣợng TcpClient đƣợc tạo ra, nó phải đƣợc kết nối đến thiết bị ở xa thông qua phƣơng thức Connect() nhƣ ví dụ dƣới đây: TcpClient newcon = new TcpClient(); newcon.Connect('192.168.6.1', 8000); TcpClient(IPEndPoint localEP): phƣơng thức tạo lập này cho phép chúng ta chỉ ra địa chỉ IP cục bộ cùng với port đƣợc dùng. Đây là phƣơng thức tạo lập thƣờng đƣợc sử dụng khi thiết bị có nhiều hơn một card mạng và chúng ta muốn dữ liệu đƣợc gởi trên card mạng nào. Phƣơng thức Connect() cũng đƣợc dùng để kết nối với thiết bị ở xa: IPEndPoint iep = new IPEndPoint(IPAddress,Parse('192.168.6.1'), 8000); TcpClient newcon = new TcpClient(iep); newcon.Connect('192.168.6.2', 8000); TcpClient(String host, int port): phƣơng thức tạo lập thứ ba này thƣờng đƣợc sử dụng nhất, nó cho phép chỉ ra thiết bị nhận trong phƣơng thức tạo lập và không cần phải dùng phƣơng thức Connect(). Địa chỉ của thiết bị ở xa có thể là một chuỗi hostname hoặc một chuỗi địa chỉ IP. Phƣơng thức tạo lập của TcpClient sẽ tự động phân giải hostname thành địa chỉ IP. Ví dụ: TcpClient newcon = new TcpClient('www.isp.net', 8000); Mỗi khi đối tƣợng TcpClient đƣợc tạo ra, nhiều thuộc tính và phƣơng thức có thể đƣợc dùng để xử lý việc truyền dữ liệu qua lại giữa các thiết bị. Trang 79 Khoa Công Nghệ Thông Tin Giáo trình Lập Trình Mạng Phƣơng Thức Mô Tả Close() Đóng kết nối TCP Connect() Thành lập kết nối TCP với thiết bị ở xa Equals() So sánh hai đối tƣợng TcpClient GetHashCode() Lấy mã hash code GetStream() Lấy đối tƣợng Stream nó có thể dùng để gởi và nhận dữ liệu GetType() Lấy kiểu của thể hiện hiện tại ToString() Chuyển thể hiện hiện tại sang kiểu chuỗi Phƣơng thức Connect() dùng để kết nối đối tƣợng TcpClient đến thiết bị ở xa. Mỗi khi kết nối đƣợc thành lập, phƣơng thức GetStream() gán một đối tƣợng NetworkStream để gởi và nhận dữ liệu nhờ vào phƣơng thức Read() và Write(). Lớp TcpClient còn có nhiều thuộc tính đƣợc mô tả trong bảng sau: Thuộc Tính Mô Tả LingerState Lấy hoặc thiết lập thời gian kết nối TCP vẫn còn sau khi gọi phƣơng thức Close() NoDelay Lấy hoặc thiết lập thời gian trễ đƣợc dùng để gởi hoặc nhận ở bộ đệm TCP ReceiveBufferSize Lấy hoặc thiết lập kích thƣớc bộ đệm TCP nhận ReceiveTimeout Lấy hoặc thiết lập thời gian timeout của Socket SendBufferSize Lấy hoặc thiết lập kích thƣớc bộ đệm TCP gởi SendTimeout Lấy hoặc thiết lập giá trị timeout của Socket Chƣơng trình TCPClient đơn giản using System; using System.Net; using System.Net.Sockets; using System.Text; class TcpClientSample { public static void Main() { byte[] data = new byte[1024]; string input, stringData; TcpClient server; Trang 80 Khoa Công Nghệ Thông Tin Giáo trình Lập Trình Mạng try { server = new TcpClient('127.0.0.1', 5000); } catch (SocketException) { Console.WriteLine('Khong the ket noi den server'); return; } NetworkStream ns = server.GetStream(); int recv = ns.Read(data, 0, data.Length); stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(stringData); while (true) { input = Console.ReadLine(); if (input == 'exit') break; ns.Write(Encoding.ASCII.GetBytes(input), 0, input.Length); ns.Flush(); data = new byte[1024]; recv = ns.Read(data, 0, data.Length); stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(stringData); } Console.WriteLine('Dang ngat ket noi voi server...'); ns.Close(); server.Close(); } } Trong chƣơng trình trên phƣơng thức tạo lập sẽ tự động kết nối đến Server đƣợc chỉ ra ở xa, nó nên đƣợc đặt ở trong khối try-catch để phòng trƣờng hợp Server không hợp lệ. Sau khi đối tƣợng NetworkStream đƣợc tạo ra, ta có thể dùng phƣơng thức Read() và Write() để nhận và gởi dữ liệu: Trang 81 Khoa Công Nghệ Thông Tin Giáo trình Lập Trình Mạng while (true) { input = Console.ReadLine(); if (input == 'exit') break; ns.Write(Encoding.ASCII.GetBytes(input), 0, input.Length); ns.Flush(); data = new byte[1024]; recv = ns.Read(data, 0, data.Length); stringData = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine(stringData); } Phƣơng thức Read() yêu cầu 3 tham số:  Mảng các byte để đặt dữ liệu nhận vào  Vị trí offset trong bộ đệm mà tại đó ta muốn đặt dữ liệu  Chiều dài của bộ đệm dữ liệu Cũng giống nhƣ phƣơng thức Receive() của Socket, phƣơng t ...

Tài liệu được xem nhiều:

Gợi ý tài liệu liên quan: