Hầu hết các ngôn ngữ lập trình đều có thể sử dụng để lập trình mạng, tuy nhiênviệc lập trình mạng còn phụ thuộc v{o c|c thư viện v{ môi trường lập trình cóhỗ trợ hay không. Có thể liệt kê các ngôn ngữ lập trình có thể sử dụng để lậptrình mạng như sau: CC++: Ngôn ngữ lập trình rất mạnh và phổ biến, dùng để viết mọi loạiứng dụng trong đó có ứng dụng mạng. Java: Ngôn ngữ lập trình khá thông dụng và hỗ trợ trên nhiều môitrường, trong đó có thể viết ứng dụng chạy trên điện thoại di động. C: Ngôn ngữ lập trình cũng rất mạnh và dễ sử dụng, chỉ hỗ trợ trên họhệ điều hành Windows của Microsoft. Python, Perl, Php…: C|c ngôn ngữ thông dịch, sử dụng để viết nhanh cáctiện ích nhỏ một c|ch nhanh chóng, trong đó có thể sử dụng để viết ứngdụng mạng.Học phần này sẽ trình b{y phương ph|p lập trình mạng dựa trên hai ngôn ngữ:CC++ và CYêu cầu về kiến thức:Mạng máy tính.Ngôn ngữ lập trình CC++.Ngôn ngữ lập trình C.Lên lớp đầy đủ
LẬP TRÌNH MẠNG Network Programming Lương Ánh Hoàng hoangla@soict.hut.edu.vn Mục đích • Cung cấp kiến thức lập trình ứng dụng mạng –Xây dựng ứng dụng Server –Xây dựng ứng dụng Client –Các kỹ thuật vào • Cung cấp kỹ cần thiết để thiết kế xây dựng ứng dụng mạng –Sử dụng thư viện, môi trường, tài liệu –Thiết kế, xây dựng chương trình Yêu cầu • Yêu cầu kiến thức: – Mạng máy tính – Ngôn ngữ lập trình C/C++ – Ngôn ngữ lập trình C# • Lên lớp đầy đủ Thời lượng môn học • Thời lượng: 45 tiết – Lý thuyết: 30 tiết – Bài tập:15 tiết – Thuc hanh: 15 tiet Tài liệu • Network Programming for Microsoft Windows Second Edition Anthony Jone, Jim Ohlun • C# Network Programming Sybex Đánh giá • Thi cuối kỳ: 70% • Quá trình: 30% Nội dung • Chương Giới thiệu mô hình lập trình mạng • Chương Bộ giao thức TCP/IP • Chương Windows Socket • Chương MFC Socket • Chương .NET Socket Chương Giới thiệu mô hình lập trình mạng Lương Ánh Hoàng hoangla@soict.hut.edu.vn Chương Giới thiệu mô hình lập trình mạng • 1.1 Tổng quan lập trình mạng • 1.2 Giao thức Internet 1.1 Tổng quan lập trình mạng • Khái niệm – Lập trình mạng kỹ thuật lập trình nhằm xây dựng ứng dụng, phần mềm khai thác hiệu tài nguyên mạng máy tính 10 Chương NET Soket • 5.1 Giới thiệu • 5.2 TCP Server • 5.3 TCP Client • 5.4 UDP Server/Client 170 Chương 5.1 Giới thiệu • NET Framework thư viện chạy đa kiến trúc Microsoft • Hai namespace hỗ trợ lập trình mạng: System.Net System.Net.Sockets • Một vài lớp – IPAddress: Lưu trữ quản lý địa IP – IPEndPoint: Lưu trữ thông tin địa socket, tương tự SOCKADDR_IN Bao gồm IPAddress cổng – DNS: Hỗ trợ thao tác phân giải tên miền – Socket: Xử lý thao tác socket 171 Chương 5.1 Giới thiệu • IPAddress: Đóng gói địa IP – Khởi tạo: IPAddress.Parse(“192.168.1.1”); – Lấy dạng chuỗi: IPAddress.ToString(); – Các địa đặc biệt: IPAddress.Any, IPAddress.Broadcast, IPAddress.Loopback • IPEndPoint: Đóng gói địa socket – Khởi tạo: IPEndPoint(IPAddress, Int32) – Lấy dạng chuỗi: IPEndPoint.ToString(); • DNS: thực phân giải tên miền – Lấy địa IP: IPAddress[] DNS.GetHostAddress(“www.google.com”); – Lấy thông tin host: IPHostEntry DNS.GetHostEntry(“www.google.com”); 172 Chương 5.2 TCP Server • Trình tự tạo TCP Server – 1.Tạo Socket – 2.Liên kết với IPEndPoint cục – 3.Lắng nghe kết nối – 4.Chấp nhận kết nối – 5.Gửi nhận liệu theo giao thức thiết kế – 6.Đóng kết nối sau hoàn thành trở lại trạng thái lắng nghe chờ kết nối 173 Chương 5.2 TCP Server • Thí dụ // Thiết lập địa server IPEndPoint ie = new IPEndPoint(IPAddress.Any, 8888); // Tạo socket server Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); int ret; // Bind Listen server.Bind(ie); server.Listen(10); Console.WriteLine(“Doi ket noi tu client "); // Chấp nhận kết nối Socket client = server.Accept(); Console.WriteLine("Chap nhan ket noi tu:{0}", client.RemoteEndPoint.ToString()); string s = “Hello Net Socket"; byte[] data = new byte[1024]; data = Encoding.ASCII.GetBytes(s); client.Send(data, data.Length, SocketFlags.None); 174 Chương 5.2 TCP Server • Thí dụ (tiếp) while (true) { data = new byte[1024]; ret = client.Receive(data); if (ret == 0) break; Console.WriteLine("Du lieu tu client:{0}", Encoding.ASCII.GetString(data,0,ret)); } client.Shutdown(SocketShutdown.Both); client.Close(); 175 Chương 5.3 TCP Client • Trình tự – Xác định địa Server – Tạo Socket – Kết nối đến Server – Gửi nhận liệu theo giao thức thiết kế – Đóng Socket 176 Chương 5.3 TCP Client • Thí dụ // Thiết lập địa IPEndPoint iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888); // Tạo socket client Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Kết nối đến server client.Connect(iep); byte[] data = new byte[1024]; int recv = client.Receive(data); // Nhận câu chào từ server string s = Encoding.ASCII.GetString(data, 0, recv); Console.WriteLine("Server gui:{0}", s); string input; while (true) { input = Console.ReadLine(); //Chuyen input mang byte gui len cho server data = Encoding.ASCII.GetBytes(input); client.Send(data, data.Length, SocketFlags.None); 177 Chương 5.3 TCP Client • Thí dụ (tiếp) if (input.ToUpper().Equals("QUIT")) break; } client.Disconnect(true); client.Close(); } 178 Semina • Yêu cầu – Giải thích cặn kẽ hoạt động giao thức (mô tả đặc tả gói tin, kịch gửi nhận server client) – Viết chương trình minh họa (hoặc sử dụng) chức môt giao thức Chương trình phép sử dụng thư viện: Winsock, MFC Socket, NetSocket – Slide khoảng 10 trang • Kịch giao thức • Khuôn dạng liệu giao thức – Khung điểm: => 10 – Sử dụng Wireshark • Các giao thức cần trình bày – 1.FTP: Cần minh họa việc tải file – 2.HTTP: Cần minh họa việc lấy trang web – 3.SMTP: Cần minh họa việc gửi thư – 4.POP3: Minh họa việc nhận thư Semina • Các giao thức cần trình bày – 5.IMAP: Minh họa việc nhận thư – 6.SNMP: Minh họa việc điều khiển thiết bị – 7.Telnet – 8.SSH – 9.DNS – 10.HTTP Proxy – 11.ICMP – 12.TFTP – 13.DHCP – 14.NTP – 15.IRC – 16.RTSP dinhthaobkhn@gmail.com Chương 5.4 UDP Server/Client • Trình tự UDP Server – Tạo Socket – Liên kết với IPEndPoint cục qua hàm Bind (UDP Server) xác định địa Server để gửi liệu (UDP Client) – Gửi nhận liệu theo giao thức thiết kế hàm ReceiveFrom/SendTo – Đóng Socket 181 Phân phối điểm • Thi cuối kỳ: 70% • Chuyên cần: 15% • Giữa kỳ: 15% Nội dung • Tất chương Hình thức thi • Trắc nghiệm • Thời gian: 60p • Số câu hỏi: 40 • Cả lý thuyết + tập • Không sử dụng tài liệu • hoangla@soict.hut.edu.vn