Lập trình mạng với C#
CHƯƠNG 1: CÁC KIẾN THỨC CƠ BẢN VỀ MẠNG MÁY TÍNH.3
1.1. Mô hình tham khảo 7 tầng OSI.3
1.2. Họ giao thức TCP/IP.5
1.3. So sánh giữa hai giao thức TCP và UDP.6
1.4. Cổng giao thức.7
1.5. ðịa chỉ IP, các ñịa chỉ IP dành riêng.7
1.6. ðịa chỉ tên miền: loại A, loại MX. .8
1.7. Một số giao thức ở tầng ứng dụng: HTTP, SMTP, POP3, FTP. .8
CHƯƠNG 2: LẬP TRÌNH MẠNG TRONG .NET FRAMEWORK .9
2.1. Socket hướng kết nối (TCP Socket) .9
2.1.1. Giới thiệu về NameSpace System.Net và System.Net.Sockets .10
2.1.2. Viết chương trình cho phía máy chủ.11
2.1.3. Viết chương trình cho phía máy khách.13
2.1.4. Sử dụng các luồng nhập xuất với Socket.14
2.2. Socket không hướng kết nối (UDP Socket).17
2.2.1. Viết chương trình cho phía máy chủ.17
2.2.2. Viết chương trình cho phía máy khách.18
2.2.3. Sử dụng lớp System.IO.MemoryStream ñể tạo vùng ñệm nhập xuất.20
2.3. Sử dụng các lớp hỗ trợ ñược xây dựng từ lớp Soket .20
2.3.1. Lớp TCPClient.21
2.3.2. Lớp TCPListener .22
2.3.3. Lớp UDPClient .24
2.4. Socket không ñồng bộ.26
2.4.1. Mô hình xử lý sự kiện của windows .26
2.4.2. Sử dụng Socket không ñồng bộ .27
2.4.3. Ví dụ về Socket không ñồng bộ.28
2.4.4. Sử dụng các phương thức Non-blocking .35
2.5. Sử dụng Thread trong các ứng dụng mạng .39
2.5.1. Sử dụng Thread trong chương trình .Net.40
2.5.2. Sử dụng Thread trong các chương trình Server .41
2.5.3. Sử dụng Thread ñể gửi/nhận dữ liệu.41
2.5.4. Sử dụng ThreadPool trong các chương trình .Net .43
2.5.5. Sử dụng ThreadPool trong các chương trình Server.47
2.6. Kỹ thuật IP Multicasting.48
2.6.1. Broadcasting là gì?.48
2.6.2. Sử dụng Broadcasting ñể gửi dữ liệu ñến nhiều máy trong mạng cục bộ .48
2.6.3. Multicasting là gì? .49
2.6.4. Socket Multicasting trong .Net .50
2.7 Bài tập áp dụng .53
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG MẠNG.55
3.1. Giao thức ICMP.55
3.1.1. Sử dụng Raw Socket.55
3.1.2. Sử dụng giao thức ICMP và Raw Socket ñể xây dựng chương trình Ping.57
3.1.3. Sử dụng giao thức ICMP và Raw Socket ñể xây dựng chương trình TraceRoute .58
3.2. Giao thức SMTP, POP3.60
3.2.1. Cơ bản về hệ thống Mail và giao thức SMTP, POP3 .60
3.2.2. Cài ñặt SMTP, POP3 Client/Server .60
3.3. Giao thức HTTP.67
3.3.1. Cơ bản về giao thức HTTP .67
3.3.2. Cài ñặt HTTP Client/Server.68
3.4. Giao thức FTP.74
3.4.1. Cơ bản về giao thức FTP .74
3.4.2. Cài ñặt FTP Client/Server.84
2
3.5. DNS (Domain Name Server) .88
3.5.1. Vấn ñề phân giải tên miền .88
3.5.2. Triển khai DNS MX (Mail Exchange) .89
3.6 Thảo luận về các ứng dụng khác thường gặp .93
3.7 Bài tập áp dụng .93
CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG NHIỀU LỚP .94
4.1. Mô hình 2 lớp (two tier), 3 lớp (three tier) và n lớp. .94
4.2. Remoting.98
4.2.1. Giới thiệu về Remoting.102
4.2.2. Khai báo, cài ñặt và ñăng ký giao diện từ xa .102
4.2.3. Triệu gọi phương thức từ xa .107
4.3. Web Serive.107
4.3.1. Giới thiệu về Web Serives .107
4.3.2. Giao thức SOAP .109
4.3.3. Xây dựng Web Services.112
4.3.4. Triệu gọi Web Services từ ứng dụng .NET, Java và các ngôn ngữ khác .114
4.4 Thảo luận về các ứng dụng phân tán .116
4.5. Bài tập áp dụng .116
- Web service có thể ñược công bố (publish) và gọi thực hiện qua mạng. Ngày nay web service ñược sử dụng rất nhiều trong những lĩnh vực khác nhau của cuộc sống như: - Dịch vụ chọn lọc và phân loại tin tức: là những hệ thống thư viện kết nối ñến các web portal ñể tìm kiếm các thông tin từ các nhà xuất bản có chứa những khoá muốn tìm. - Dịch vụ hiển thị danh sách ñĩa nhạc dành cho các công ty thu thanh. - Ứng dụng ñại lý du lịch có nhiều giá vé ñi du lịch khác nhau do có chọn lựa phục vụ của nhiều hãng hàng không. - Bảng tính toán chính sách bảo hiểm dùng công nghệ Excel/COM với giao diện web. - Thông tin thương mại bao gồm nhiều nội dung, nhiều mục tin như: dự báo thời tiết, thông tin sức khoẻ, lịch bay, tỷ giá cổ phiếu,… - Những giao dịch trục tuyến cho cả B2B và B2C như: ñặt vé máy bay, làm giao kèo thuê xe. - Hệ thống thông tin dùng java ñể tính toán tỷ giá chuyển ñổi giữa các loại tiền tệ. Hệ thống này sẽ ñược các ứng dụng khác dùng như một web service. 4. Kiến trúc Web service Kiến trúc của Web service bao gồm các tầng như sau: 109 Hình 1: Kiến trúc Web service Trong ñó bao gồm các tầng như sau: - Tầng vận chuyển: có nhiệm vụ truyền thông ñiệp giữa các ứng dụng mạng, bao gồm những giao thức như HTTP, SMTP, FTP, JSM và gần ñây nhất là giao thức thay ñổi khổi mở rộng (Blocks Extensible Exchange Protocol- BEEP). - Tầng giao thức tương tác dịch vụ ( Service Communication Protocol) với công nghệ chuẩn là SOAP. SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, SOAP cho phép người dùng triệu gọi một service từ xa thông qua một message XML. - Tầng mô tả dịch vụ (Service Description) với công nghệ chuẩn là WSDL và XML. WSDL là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML. Web service sử dụng ngôn ngữ WSDL ñể truyền các tham số và các loại dữ liệu cho các thao tác, các chức năng mà web service cung cấp. - Tầng dịch vụ ( Service): cung cấp các chức năng của service. - Tầng ñăng ký dịch vụ (Service Registry) với công nghệ chuẩn là UDDI. UDDI dùng cho cả người dùng và SOAP server, nó cho phép ñăng ký dịch vụ ñể người dùng có thể gọi thực hiện service từ xa qua mạng, hay nói cách khác một service cần phải ñược ñăng ký ñể cho phép các client có thể gọi thực hiện - Bên cạnh ñó ñể cho các service có tính an toàn, toàn vẹn và bảo mật thông tin trong kiến trúc web service chúng ta có thêm các tầng Policy, Security, Transaction, Management giúp tăng cường tính bảo mật, an toàn và toàn vẹn thông tin khi sử dụng service. 4.3.2. Giao thức SOAP 110 SOAP là chữ viết tắt của cụm từ “Simple Object Access Protocol – Giao thức truy cập ñối tượng ñơn giản”, nhưng với sự xem xét mới nhất thì, SOAP sẽ không còn là một từ viết tắt nữa. Chuẩn SOAP ghi nhận XML ñược thể hiện thế nào bên trong tài liệu SOAP, làm thế nào nội dung của thông ñiệp ñược truyền tải, và làm thế nào thông ñiệp ñược xử lý ở cả hai phía gởi và nhận. SOAP cũng cung cấp một tập các từ vựng chuẩn. Các thuật ngữ: Như bẩt kỳ công nghệ nào, SOAP cũng có tập các thuật ngữ của riêng nó. Có nhiều thuật ngữ ñược sử dụng thường xuyên ñể mô tả các khía cạnh khác nhau của chuẩn SOAP. Nhiều lập trình viên dùng các thuật ngữ này mà không thật sự hiểu ý nghĩa của nó. ðể hiểu thật sự các khái niệm ñòi hỏi phải tốn một thời gian ñể hiểu ý nghĩa của từng thuật ngữ và làm thế nào ñể áp dụng cho cả chuẩn SOAP và một Web Services thực thụ Chú ý: Chuẩn SOAP không chỉ là chuẩn XML mà chuẩn này còn bao gồm các thông ñiệp SOAP có hành vi như thế nào, các phương tiện vận chuyển khác nhau, cách mà các lỗi ñược xử lý.. Sự truyền tải dữ liệu SOAP Binding Thuật ngữ mô tả làm thế nào một thông ñiệp SOAP tương tác ñược với một giao thức vận chuyển như HTTP, SMTP hay FTP ñể di chuyển trên Internet. ðiều quan trọng là SOAP di chuyển bằng một giao thức chuẩn ñể liên lạc với các sản phẩm Web Services khác. Trước SOAP, nhiều người phát triển ñã tạo ra các phương pháp của riêng họ ñể chuyển tải một tài liệu XML trên mạng. Các cách này vẫn hoạt ñộng tốt trong phạm vi một nhóm cụ thể. Tuy nhiên khi bạn cần làm việc với một nhóm khác ở trong hay bên ngoài công ty thì ñiều này trở nên khó khăn vì phải huấn luyện và có thể thay ñổi ñể làm việc với việc truyền tải tài liệu XML mà họ ñang sử dụng. Bằng cách sử dụng một tài liệu XML chuẩn trên các giao thức chuẩn, công việc cần làm khi cộng tác với nhau sẽ ñược giảm thiểu tối ña SOAP Message Exchang Pattern (MEP) Thuật ngữ mô tả làm thế nào mà một tài liệu SOAP trao ñổi giữa phía máy khách và chủ. Thông ñiệp SOAP sở hữu một liên kết, như là HTTP, ñể nó có thể truyền trên Internet. Việc nói chuyện giữa máy khách và chủ, ở ñây là các nút, xác ñịnh các hành ñộng mà cả hai phía thực hiện. Nhắc lại SOAP là một XML ñóng gói RPC. Vì thế, MEP hoàn toàn là yêu cầu và phản hồi giữa máy khách và chủ (hay các nút khác). Như vậy nếu có nhu cầu liên lạc giữa các nút thì việc này ñược thực hiện bằng nhiều yêu cầu và phản hồi ñể hoàn tất việc truyền thông ñiệp. Cách này khác hẳn với các công nghệ ñối tượng từ xa khác như CORBA, công nghệ ñó ñược thực hiện chỉ trong một kết nối. SOAP Application Một ứng dụng SOAP ñơn giản là một ứng dụng dùng SOAP theo một vài cách khác nhau. Vài ứng dụng hoàn toàn dựa trên chuẩn SOAP, như là Web Services cổ phiếu, hoặc dùng chuẩn SOAP ñể nhận mã và các cập nhật của phần mềm. Chú ý là một ứng dụng có thể tạo, sử dụng hoặc là nút trung gian của Web Services. SOAP Node Trách nhiệm của một nút có thể bao gồm gởi, nhận, xử lý hoặc truyền tải lại một thông ñiệp SOAP. Một nút chỉ là một phần nhỏ của phần mềm, xử lý một tài liệu SOAP phụ thuộc vào 111 vai trò của nó. Bên cạnh việc truyền dữ liệu, một nút có trách nhiệm ñảm bảo thông tin XML trong tài liệu SOAP phải ñúng ngữ pháp theo chuẩn SOAP. SOAP Role Một vai trò của SOAP ñịnh nghĩa một nút cụ thể hoạt ñộng như thế nào. Nó có thể là nút gởi, nhận hoặc nút trung gian. SOAP Sender Nút gởi là nút gởi yêu cầu SOAP. Nếu bạn nghĩ ñến ví dụ của ứng dụng khách chủ thì khi ứng dụng khách thực hiện yêu cầu, nó gởi thông ñiệp tới ứng dụng chủ ñể yêu cầu vài thông tin. SOAP Receiver Ngược lại với SOAP sender là nút nhận. SOAP Intermediary Một nút trung gian có thể xem một thông ñiệp SOAP và tương tác trên vài phần thông tin của thông ñiệp, và chuyển ñến vị trí kế tiếp của thông ñiệp. Một nút trung gian thường hoạt ñộng như một router. Một router sẽ xem xét thông tin của gói tin chuyển trên mạng, tìm ñiểm kế tiếp của gói tin và chuyển gói tin ñển ñó. Message Path Một thông ñiệp SOAP di chuyển từ phía bên gởi ñến phía bên nhận thông ñiệp thông qua nhiều nút trung gian. Tuyến ñường ñi của thông ñiệp ñược gọi là một Message Path. Initial SOAP Sender Nút gởi yêu cầu SOAP ñầu tiên là nút gởi SOAP ban ñầu. SOAP Feature Một ñặc ñiểm SOAP là một phần chức năng của phần mềm hỗ trợ chức năng SOAP. Các thuật ngữ liên quan ñến XML Chuẩn SOAP cũng ñịnh nghĩa một tập nhỏ các phần tử XML ñể ñóng gói dữ liệu ñược truyền giữa các nút. Thật sự chỉ có vài phần tử vì phần thân của thông ñiệp có thể khác nhau phụ thuộc vào cài ñặt. Sự uyển chuyển này ñược cho phép bởi chuẩn SOAP. SOAP Message ðây là tài liệu XML ñược truyền bởi một nút SOAP gởi hoặc nhận. Một nút gởi hoặc nút khách tạo ra một tài liệu XML chứa thông tin mà phía bên khách cần từ phía chủ. Một khi tài liệu ñược truyền, phía bên chủ phân giải thông tin trong tài liệu ñể truy xuất các giá trị khác nhau và tạo một thông ñiệp SOAP mới ñể phản hồi. SOAP Envelope ðây là phần tử gốc của tài liệu SOAP XML. Tài liệu SOAP chứa nhiều ñịnh nghĩa không gian tên (namespace) nhưng các phần tử liên quan tới thông ñiệp SOAP sẽ có ENV: là tiếp ñầu ngữ. SOAP Header 112 Phần ñầu của một thông ñiệp SOAP chứa một khối thông tin ñầu trong tài liệu XML ñể ñịnh tuyến và xử lý thông ñiệp SOAP. Dữ liệu này tách rời khỏi phần thân của tài liệu có chứa thông tin liên quan ñến ñối tượng ñược gọi. SOAP Header Block Phần ñầu của SOAP chứa nhiều phần giới hạn hay là nhiều khối thông tin có một khối thông tin của phần ñầu. Những khối thông tin của phần ñầu này chứa thông tin về các nút trung gian vì một nút cần biết nút kế tiếp ñể thông ñiệp ñược gởi ñến. SOAP Body Phần thân của SOAP thật sự chứa thông tin của ñối tượng ñể xử lý thông tin. Phần thân sau khi ñược phân tách sẽ trở thành ñối tượng. ðối tượng xử lý thông tin và kết quả ñược ñặt trong phần thân của tài liệu trả về. SOAP Fault ðây là một phần thông tin của SOAP chứa thông tin ñến bất kỳ lỗi gì xảy ra tại một nút SOAP. 4.3.3. Xây dựng Web Services - Tạo một Web Services project - Tạo Web Method 113 - Chạy thử Web Services danh sách các hàm sẽ ñược liệt kê - Chọn hàm Add 114 - Sau khi nhập các tham số vào, nhấn Invoke. Kết quả sẽ xuất hiện 4.3.4. Triệu gọi Web Services từ ứng dụng .NET, Java và các ngôn ngữ khác - Sau khi xây dựng Web Server song ta có thể triệu gọi nó từ một ứng dụng khác - Tạo một Window Form 115 - Add Web Reference - Tạo màn hình: 116 - Viết hàm xử lý nút nhấn: - Chạy thử ứng dụng ta có kết quả: 4.4 Thảo luận về các ứng dụng phân tán 4.5. Bài tập áp dụng 1. Viết chương trình Chat sử dụng công nghệ Web Services 2. Viết chương trình Calculator bằng công nghệ Web Services 3. Viết chường trình quản lý FileManager bằng công nghệ Web Services. 117 TÀI LIỆU THAM KHẢO 1. Richard Blum, C# Network Programming, 2003 2. Fiach Reid, Network programming in NET with C# and VB.NET, Digital Press, 2003 3. Bài giảng “Nhập môn Công nghệ phần mềm”, ðại học KHTN 4. Bài giảng “Xây dựng phần mềm hướng ñối tượng”, ðại học KHTN 5. Bài giảng “Lập trình truyền thông”, ðại học Cần Thơ 6. Bài giảng “Công nghệ .NET”, Khoa CNTT – ðại học SPKT Hưng Yên 7. Bài giảng “Java Nâng cao”, Khoa CNTT- ðại học SPKT Hưng Yên 8. Các ví dụ tại Website: www.java2s.com
File đính kèm:
- Lập trình mạng với C#.pdf