Bài giảng Lập trình mạng: Chương 1 - ThS. Trần Bá Nhiệm

35 6 0
Bài giảng Lập trình mạng: Chương 1 - ThS. Trần Bá Nhiệm

Đ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 chương 1 giới thiệu về Internet and Network programming. Chương này sẽ cung cấp cho người học một số nội dung cơ bản như: Lý do lập trình mạng trên nền tảng .NET, phạm vi, địa chỉ IP, Network stack, ports, internet standards, .NET framework, Visual Studio .NET, .NET SDK. Mời các bạn cùng tham khảo.

6/29/2011 CHƯƠNG INTERNET & NETWORK PROGRAMMING ThS Trần Bá Nhiệm Website: sites.google.com/site/tranbanhiem Email: tranbanhiem@gmail.com Nội dung • • • • • • • • • • Giới thiệu Lý lập trình mạng tảng NET Phạm vi Địa IP Network stack Ports Internet standards NET framework Visual Studio NET NET SDK 29/06/2011 Chương 1: Giới thiệu 6/29/2011 Giới thiệu • Khóa học cung cấp khả phát triển ứng dụng mạng dựa ngơn ngữ lập trình C# VB.NET • Khảo sát kỹ thuật lập trình mạng • Thiết kế ứng dụng mạng: bảo mật, hiệu suất, linh hoạt 29/06/2011 Chương 1: Giới thiệu Tài liệu tham khảo Network programming in NET with CSharp and VB.NET, Fiach Reid, Digital Press, 2004 C# Network Programming, Richard Blum, Sybex, 2003 Advanced Programming in C# 29/06/2011 Chương 1: Giới thiệu 6/29/2011 Lý lập trình mạng tảng NET • NET hỗ trợ lập trình mạng tốt so với sản phẩm khác Microsoft • NET có hỗ trợ đa tảng • NET cung cấp nhiều khả lập trình mạng mạnh mẽ • Tuy nhiên NET khơng phải lựa chọn nhất, mơi trường UNIX Java thích hợp 29/06/2011 Chương 1: Giới thiệu Phạm vi • Một chương trình mạng chương trình dùng mạng máy tính để truyền thơng tin đến/từ ứng dụng khác • Lập trình mạng có điểm khác biệt với lập trình Web 29/06/2011 Chương 1: Giới thiệu 6/29/2011 Địa IP • Mỗi máy tính kết nối trực tiếp vào Internet phải có địa IP • Phân biệt địa public IP private IP – Ví dụ: 192.618.0.1 private IP, 81.98.59.133 public IP • Một máy tính có nhiều địa IP • Nếu máy tính nhận địa 127.0.0.1 khơng kết nối với mạng địa local 29/06/2011 Chương 1: Giới thiệu Địa dành riêng Private address: Địa dành riêng Public address: Địa dùng chung 29/06/2011 Chương 1: Giới thiệu 6/29/2011 Các lớp địa IP 29/06/2011 ĐịaChương chỉ1:mạng Giới thiệu Các lớp địa IP Địa broadcast 29/06/2011 Chương 1: Giới thiệu 10 6/29/2011 Địa IP • Tất máy tính với địa dành riêng phải kết nối với máy tính router với địa dùng chung để truy cập Internet • Địa IP máy tính thay đổi vai trị DHCP server • Một địa không thay đổi gắn với card mạng địa MAC (còn gọi địa phần cứng) 29/06/2011 Chương 1: Giới thiệu 11 Network stack • Q trình lưu thơng mạng tín hiệu phức tạp, khơng có khái niệm đóng gói (encapsulation) người lập trình “sa lầy” vào chi tiết nhỏ • Người lập trình cần tập trung vào điều xảy tầng cao OSI 29/06/2011 Chương 1: Giới thiệu 12 6/29/2011 Network stack cổ điển Số thứ tự Tên tầng Giao thức Application Presentation Session Transport FTP XNS RPC TCP Network Data link Physical IP Ethernet frames Điện áp 29/06/2011 Chương 1: Giới thiệu 13 Network stack đại Số thứ tự Structured Information Message SOAP HTTP Stream Packet TCP IP 29/06/2011 Tên tầng Chương 1: Giới thiệu Giao thức 14 6/29/2011 Network stack • Chúng ta khơng cần quan tâm thông tin “lan truyền nào”, mà quan tâm “gửi gì” • Chúng ta khơng khảo sát giao thức tầng vật lý công việc kỹ sư điện tử, hệ điều hành 29/06/2011 Chương 1: Giới thiệu 15 Ports • Mỗi máy tính có nhiều ứng dụng mạng chạy đồng thời • Dữ liệu phải đính kèm thơng tin cho biết ứng dụng dùng port number • Ví dụ: 80 cho ứng dụng Web, 110 cho ứng dụng email • Thơng tin port chứa header TCP, UDP packet 29/06/2011 Chương 1: Giới thiệu 16 6/29/2011 Ports Số thứ tự port 20 FTP (data) 21 25 53 80 FTP (control) SMTP (email, outgoing) DNS (domain names) HTTP (Web) 110 119 143 POP3 (email, incoming) NNTP (news) IMAP (email, incoming) 29/06/2011 Giao thức Chương 1: Giới thiệu 17 Internet standards • Người lập trình phải ý đến chuẩn tổ chức lớn đưa Internet Engineering Task Force (IETF) World Wide Web Consortium (W3C) • RFC IETF định nghĩa • HTML, XML W3C định nghĩa 29/06/2011 Chương 1: Giới thiệu 18 6/29/2011 Các RFC quan trọng RFC Document RFC 821 Giao thức SMTP (email, outgoing) RFC 954 RFC 959 RFC 1939 RFC 2616 WHOIS FTP (uploading and downloading) POP3 (email, incoming) HTTP (Web browsing) RFC 793 RFC 792 RFC 791 TCP (runs under all above protocols) ICMP (ping) IP (runs under TCP and ICMP) 29/06/2011 Chương 1: Giới thiệu 19 NET framework • NET khơng phải ngơn ngữ lập trình, cung cấp framework cho NNLT làm việc với nhau, gồm: C#, VB.NET, Managed C++, J# NET • Framework định nghĩa Framework Class Library (FCL) • NNTL chia sẻ FCL Common Language Runtime (CLR) – tảng môi trường thực thi cho ứng dụng NET 29/06/2011 Chương 1: Giới thiệu 20 10 6/29/2011 Phát biểu switch • Cú pháp: switch ( ) { case : //Các câu lệnh 1… break; case : //Các câu lệnh 2… break; default: //Các câu lệnh default… break; } 29/06/2011 Chương 1: Giới thiệu 41 Phát biểu lặp • Thực số lệnh thân vòng lặp với số lần xác định biểu thức đánh giá điều kiện cho giá trị (true) • Các loại phát biểu lặp gồm: – while – while – for – foreach 29/06/2011 Chương 1: Giới thiệu 42 21 6/29/2011 Phát biểu while • Cú pháp: while () { //các phát biểu } • Ý nghĩa: Thực lặp phát biểu thân vòng lặp mà cho kết Kiểm tra trước thực phát biểu 29/06/2011 Chương 1: Giới thiệu 43 Phát biểu while • Cú pháp: { //các phát biểu } while () • Ý nghĩa: Thực lặp phát biểu thân vòng lặp mà cho kết Kiểm tra sau thực phát biểu lần 29/06/2011 Chương 1: Giới thiệu 44 22 6/29/2011 Phát biểu for • Cú pháp: for ( = ; ; ) { //các phát biểu } • Ý nghĩa: gán = kiểm tra thực phát biểu, tăng/giảm biến, quay lại kiểm tra 29/06/2011 Chương 1: Giới thiệu 45 Phát biểu foreach • Cú pháp: foreach ( in ) { //các phát biểu } • Ý nghĩa: duyệt qua tất phần tử thực phát biểu 29/06/2011 Chương 1: Giới thiệu 46 23 6/29/2011 Phát biểu break continue • break – ngắt ngang vịng lặp lúc • continue – bỏ qua lần duyệt bắt đầu với lần • Có thể dùng loại vòng lặp 29/06/2011 Chương 1: Giới thiệu 47 Kiểu liệu Mảng • Một tập hợp giá trị có kiểu liệu • Cú pháp khai báo: DataType[số lượng phần tử] ArrayName; • Truy xuất: [] • Ví dụ: int[6] array1; 29/06/2011 Chương 1: Giới thiệu 48 24 6/29/2011 Kiểu liệu cấu trúc • Các kiểu liệu người dùng tự định nghĩa • Chứa thành phần có kiểu liệu khác • Có thể định nghĩa phương thức bên • Khơng thể thừa kế 29/06/2011 struct structEx { public int strIntDataMember; private string strStrDataMember; public void structMethod1() { //các phát biểu } } Chương 1: Giới thiệu 49 Kiểu liệu liệt kê (Enumerator) public class Holiday { public enum WeekDays { Monday, Tuesday, Wednesday, Thursday, Friday } public void GetWeekDays (String EmpName, WeekDays DayOff) { //Process WeekDays } static void Main() { Holiday myHoliday = new Holiday(); myHoliday.GetWeekDays (“Richie”, Holiday.WeekDays.Wednesday); } } 29/06/2011 Chương 1: Giới thiệu 50 25 6/29/2011 Kế thừa C# • Cho phép khai báo lớp dẫn xuất từ lớp có • Sử dụng lại đoạn mã viết • Hỗ trợ đơn thừa kế • Khơng cho phép đa thừa kế • Cho phép thực thi nhiều interface 29/06/2011 Chương 1: Giới thiệu 51 Kế thừa C# class Software { private int m_z; public int m_v; protected int m_x; public Software() { m_x = 100; } public Software(int y) { m_x = y; } } 29/06/2011 Chương 1: Giới thiệu 52 26 6/29/2011 Kế thừa C# class MicrosoftSoftware : Software { public MicrosoftSoftware() { Console.WriteLine(m_x); } } 29/06/2011 Chương 1: Giới thiệu 53 Kế thừa C# class IBMSoftware : Software { public IBMSoftware(int y) : base(y) { Console.WriteLine(m_x); } public IBMSoftware(string s, int f) : this(f) { Console.WriteLine(s); } } 29/06/2011 Chương 1: Giới thiệu 54 27 6/29/2011 Kế thừa C# static void Main(string[] args) { MicrosoftSoftware objMS = new MicrosoftSoftware(); IBMSoftware objIBM1 = new IBMSoftware(50); IBMSoftware objIBM2 = new IBMSoftware("test",75); Console.ReadLine(); } 29/06/2011 Chương 1: Giới thiệu 55 Kế thừa C# • Từ khóa sealed: Lớp không cho phép kế thừa public sealed class A { } public class B : A { } • Lớp B không phép kế thừa lớp A 29/06/2011 Chương 1: Giới thiệu 56 28 6/29/2011 Overriding Method class Animal { public Animal() { Console.WriteLine("Animal constructor"); } public void Talk() { Console.WriteLine("Animal talk"); } } 29/06/2011 Chương 1: Giới thiệu 57 Overriding Method class Dog : Animal { public Dog() { Console.WriteLine("Dog constructor"); } public new void Talk() { Console.WriteLine("Dog talk"); } } 29/06/2011 Chương 1: Giới thiệu 58 29 6/29/2011 Overriding Method class Test { static void Main(string[] args) { Animal a1 = new Animal(); a1.Talk(); Dog d1 = new Dog(); d1.Talk(); } } 29/06/2011 Chương 1: Giới thiệu 59 Tính đa hình - Polymorphism class Animal { public Animal() { Console.WriteLine("Animal constructor"); } public virtual void Talk() { Console.WriteLine("Animal talk"); } } 29/06/2011 Chương 1: Giới thiệu 60 30 6/29/2011 Tính đa hình - Polymorphism class Dog : Animal { public Dog() { Console.WriteLine("Dog constructor"); } public override void Talk() { Console.WriteLine("Dog talk"); } } 29/06/2011 Chương 1: Giới thiệu 61 Tính đa hình - Polymorphism class Test { static void Main(string[] args) { Animal objA = new Animal(); Dog objD = new Dog(); objA = objD ; objA.Talk(); } } 29/06/2011 Chương 1: Giới thiệu 62 31 6/29/2011 Lớp trừu tượng – Abstract Class • Khơng tạo đối tượng • Có thể định nghĩa phương thức • Có thể mở rộng từ lớp dẫn xuất • Dùng để làm lớp sở • Có thể thực thi interface 29/06/2011 Chương 1: Giới thiệu 63 Lớp trừu tượng – Abstract Class abstract class Shape { protected float m_Height = 5; protected float m_Width = 10; public abstract void CalculateArea(); public abstract void CalculateCircumference(); public void PrintHeight(){ Console.WriteLine("Height = {0}",m_Height); } public void PrintWidth() { Console.WriteLine("Width = {0}",m_Width); } } 29/06/2011 Chương 1: Giới thiệu 64 32 6/29/2011 Lớp trừu tượng – Abstract Class class Rectangle:Shape { public Rectangle( { m_Height = 20; m_Width = 30; } public override void CalculateArea() { Console.WriteLine("Area : {0}",m_Height * m_Width ); } public override void CalculateCircumference() { Console.WriteLine("Circumference = {0}",(m_Height+m_Width)*2); } } 29/06/2011 Chương 1: Giới thiệu 65 Lớp trừu tượng – Abstract Class class Test { static void Main(string[] args) { Rectangle objRec = new Rectangle(); objRec.CalculateArea(); objRec.CalculateCircumference(); } } 29/06/2011 Chương 1: Giới thiệu 66 33 6/29/2011 Giao diện – Interface • Khơng tạo đối tượng • Khơng thể định nghĩa phương thức • Lớp thực thi interface phải thực thi tất phương thức interface • Interface kế thừa interface khác 29/06/2011 Chương 1: Giới thiệu 67 Giao diện – Interface interface ITest { void Print(); } class Base : ITest { public void Print() { Console.WriteLine("Print method called"); } } 29/06/2011 Chương 1: Giới thiệu 68 34 6/29/2011 Giao diện – Interface static void Main(string[] args) { Base obj = new Base(); obj.Print(); //Gọi phương thức Print() interface ITest ITest ib = (ITest)obj ; ib.Print(); //Gọi phương thức Print() cách ép kiểu Interface ITest lớp Base Base ojB = (Base)ib; ojB.Print(); } 29/06/2011 Chương 1: Giới thiệu 69 Bài tập • Tham khảo thêm số tài liệu hướng dẫn lập trình với ngơn ngữ C# VB.NET • Cài đặt số chương trình để luyện tập, xem danh sách đề tài website tác giả: sites.google.com/site/tranbanhiem mục Lập trình C# Lập trình mạng 29/06/2011 Chương 1: Giới thiệu 70 35 ... 29/06/2 011 Chương 1: Giới thiệu Phạm vi • Một chương trình mạng chương trình dùng mạng máy tính để truyền thơng tin đến/từ ứng dụng khác • Lập trình mạng có điểm khác biệt với lập trình Web 29/06/2 011 ... 29/06/2 011 Chương 1: Giới thiệu 6/29/2 011 Các lớp địa IP 29/06/2 011 ĐịaChương ch? ?1: mạng Giới thiệu Các lớp địa IP Địa broadcast 29/06/2 011 Chương 1: Giới thiệu 10 6/29/2 011 Địa IP • Tất máy tính với địa... UDP packet 29/06/2 011 Chương 1: Giới thiệu 16 6/29/2 011 Ports Số thứ tự port 20 FTP (data) 21 25 53 80 FTP (control) SMTP (email, outgoing) DNS (domain names) HTTP (Web) 11 0 11 9 14 3 POP3 (email,

Ngày đăng: 21/05/2021, 14:18

Từ khóa liên quan

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

Tài liệu liên quan