Lập trình đọc, ghi tập tin bằng các lớp đối tượng trong .NET Framework Xử lý trên tập tin và thư mục bằng các lớp FileInfo và DirectoryInfo Tạo được ứng dụng đa tuyến trình.. Tạo[r]
Trang 1UBND TỈNH BÀ RỊA – VŨNG TÀU
TRƯỜNG CAO ĐẲNG KỸ THUẬT CÔNG NGHỆ
GIÁO TRÌNH
MÔ ĐUN LẬP TRÌNH MẠNG NGHỀ: QUẢN TRỊ MẠNG MÁY TÍNH
Trang 2TUYÊN BỐ BẢN QUYỀN
Nhằm đáp ứng nhu cầu học tập và nghiên cứu cho giảng viên và sinh viênnghề Quản trị mạng máy tính trong trường Cao đẳng Kỹ thuật Công nghệ BàRịa – Vũng Tàu, chúng tôi đã thực hiện biên soạn tài liệu Lập trình mạng
Tài liệu được biên soạn thuộc loại giáo trình phục vụ giảng dạy và học tập,lưu hành nội bộ trong Nhà trường nên các nguồn thông tin có thể được phépdùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinhdoanh thiếu lành mạnh sẽ bị nghiêm cấm
Trang 3LỜI GIỚI THIỆU
Giáo trình “Lập trình mạng” được biên soạn dựa trên khung chương trìnhđào tạo Cao đẳng nghề Quản trị mạng máy tính đã được Trường Cao đẳng Kỹthuật Công nghê Bà Rịa – Vũng Tàu phê duyệt
Tác giả đã nghiên cứu một số tài liệu, công nghệ hiện đại kết hợp với kinhnghiệm làm việc thực tế để viết nên giáo trình này Nội dung được tác giả trìnhbày cô động, dễ hiểu kèm theo các bước hướng dẫn thực hành chi tiết theonguyên tắc quan tâm đến kết quả đầu ra, khả năng tự học và kỹ năng cần thiết đểHSSV có thể hoàn thành ứng dụng trao đổi thông tin đơn giản giữa các máy tínhtrong mạng LAN từ đó định hướng xây dựng các ứng dụng mạng phức tạp hơn.Nội dung giáo trình được chia thành 04 bài, trong đó:
Bài 1: Tạo ứng dụng đọc, ghi tập tin
Bài 2: Tạo ứng dụng đa tuyến trình
Bài 3: Làm việc với Socket
Bài 4: Tạo Web Browser
Trong quá trình biên soạn, chắc chắn giáo trình còn nhiều thiếu sót Tác giảrất mong nhận được ý kiến đóng góp của quý thầy/cô và các em học sinh, sinhviên để tiếp tục hoàn thiện hơn
Xin chân thành cảm ơn quý đồng nghiệp, bạn bè đã có những ý kiến đónggóp trong quá trình biên soạn giáo trình này
Bà Rịa – Vũng Tàu, ngày …… tháng …… năm ………
Tham gia biên soạn
1 Phan Hữu Phước – Chủ biên
Trang 4MỤC LỤC
LỜI GIỚI THIỆU 1
MỤC LỤC 3
BÀI 1: TẠO ỨNG DỤNG ĐỌC, GHI TẬP TIN 7
1 Đọc, ghi tập tin bằng lớp File 7
1.1 Đọc tập tin bằng lớp File 7
1.2 Ghi tập tin bằng lớp File 8
2 Đọc tập tin bằng FileStream và StreamReader 8
2.1 Đọc tập tin bằng FileStream 8
2.2 Đọc tập tin bằng StreamReader 10
3 Ghi tập tin bằng FileStream và StreamWriter 11
3.1 Ghi tập tin bằng FileStream 12
3.2 Ghi tập tin bằng StreamWriter 13
4 Xử lý tập tin và thư mục bằng FileInfo và DirectoryInfo 14
4.1 Kiểm tra tồn tại 14
4.2 Duyệt danh sách tập tin, thư mục 15
BÀI 2: TẠO ỨNG DỤNG ĐA TUYẾN TRÌNH 17
1 Giới thiệu 17
2 Tạo ứng dụng đa tuyến trình 17
3 Thay đổi trạng thái của tuyến trình 18
4 Đọc thông tin và gán tên cho tuyến trình 20
BÀI 3: LÀM VIỆC VỚI SOCKET 23
1 Tạo ứng dụng mạng đơn giản đầu tiên 23
1.1 Tạo UDP Client 23
1.2 Tạo UDP Server 23
2 Truyền tin bằng giao thức TCP/IP 24
2.1 Xử lý trên Client 24
Trang 52.2 Xử lý trên Server 25
BÀI 4: TẠO WEB BROWSER 27
1 Tạo HTTP Client (Web Browser) 27
1.1 Giao diện 27
1.2 Nhận tài liệu HTML từ Web Server 28
2 Tạo HTTP Server (Web Server) 28
TÀI LIỆU THAM KHẢO 31
Trang 6GIÁO TRÌNH MÔ ĐUN
Tên mô đun: Lập trình mạng
Mã mô đun: MĐ32
Vị trí, tính chất, ý nghĩa và vai trò của mô đun:
Vị trí: được bố trí sau khi học xong các môn cơ sở và các môn Lập trìnhWindows, Quản trị mạng nâng cao
Tính chất: là mô đun cung cấp cho người học kiến thức và kỹ năng để cóthể thiết kế, xây dựng và phát triển ứng dụng mạng client-server trên hệđiều hành Windows
Mục tiêu của mô đun:
Về kiến thức:
Biết tên các lớp đối tượng hỗ trợ đọc, ghi tập tin
Biết khái niệm tuyến trình
Trình bày quy trình tạo ứng dụng đa tuyến trình
Biết tên các hàm thay đổi trạng thái tuyến trình
Biết khái niệm về Socket, TCP/IP
Trình bày quy trình tạo ứng dụng mạng với Socket, TCP/IP
Trình bày quy trình truyền thông Web Server với giao thức HTTP
Biết khái niệm về SMTP, POP3
Trình bày quy trình duyệt email bằng SMTP và POP3
Trình bày quy trình gửi nhận file với FTP Server
Biết khái niệm về Firewall, Proxy
Trình bày quy trình chặn địa chỉ IP, cổng giao tiếp, tên miền
Về kỹ năng:
Lập trình đọc, ghi tập tin bằng các lớp đối tượng trong NET Framework
Xử lý trên tập tin và thư mục bằng các lớp FileInfo và DirectoryInfo
Tạo được ứng dụng đa tuyến trình
Tạo được ứng dụng mạng client-server với Socket, TCP/IP, UDP
Tạo được trình duyệt web đơn giản
Tạo được ứng dụng gửi và nhận email
Tạo được ứng dụng FTP client
Tạo ứng dụng Firewall, Proxy
Cấu hình sử dụng Proxy
Trang 7Về năng lực tự chủ và trách nhiệm: có thể làm việc độc lập hoặc tham gia nhómxây dựng phần mềm mạng client-server trên hệ điều hành Windows.
Không thay đổi nội dung tập tin, thư mục của hệ điều hành và các phầnmềm khác trên máy tính
Cẩn thận không can thiệp vào các tuyến trình của hệ điều hành và các phầnmềm khác trên máy tính
Nội dung của mô đun:
Trang 8BÀI 1: TẠO ỨNG DỤNG ĐỌC, GHI TẬP TIN
Mã bài: 32.1
Giới thiệu:
Microsoft Visual Studio cung cấp đầy đủ các lớp đối tượng hỗ trợ chongười lập trình tạo chức năng đọc/ghi tập tin, quản lý thư mục/tập tin trên hệđiều hành Windows
Mục tiêu:
Biết tên các lớp hỗ trợ đọc và ghi tập tin
Lập trình đọc và ghi tập tin bằng các lớp File, FileStream, StreamReader,StreamWriter
Xử lý trên tập tin và thư mục bằng các lớp FileInfo và DirectoryInfo
Đảm bảo đóng tập tin sau khi đọc/ghi tập tin
Tránh ghi đè lên tập tin hệ thống
Nội dung:
1 Đọc, ghi tập tin bằng lớp File
1.1 Đọc tập tin bằng lớp File
Giới thiệu lớp File
o Cung cấp các chức năng cơ bản trong việc đọc và ghi nội dung vào tậptin
o Chứa các phương thức lớp do đó không cần khởi tạo đối tượng
Dùng phương thức ReadAllText: Mở một tập tin text, đọc nội dung vàochuỗi sau đó đóng tập tin
Dùng phương thức ReadAllLine: Mở một tập tin text, đọc nội dung vàomảng chuỗi (mỗi phần tử của mảng là một dòng nội dung trong tập tin) sau
đó đóng tập tin
Trang 9 Dùng phương thức ReadAllBytes: Mở một tập tin nhị phân, đọc nội dungvào mảng byte sau đó đóng tập tin.
: chuyển mảng byte thành một chuỗi1.2 Ghi tập tin bằng lớp File
Trang 10Bước 2: Xây dựng phương thức bất đồng bộ
Trang 11Bước 2: Xử lý sự kiện
2.2 Đọc tập tin bằng StreamReader
Phương pháp thông thường
Phương pháp bất đồng bộ
Trang 12o Thêm từ khóa async trước tên phương thức xử lý sự kiện
o Thêm await trước lời gọi phương thức ReadAsync của đối tượngStreamReader
Phương pháp đa tuyến trình
Bước 1: Tạo phương thức cho tuyến trình đọc và hiển thị dữ liệu Phương thứcnày được gọi trong một tuyến trình song song
Bước 2: Xử lý sự kiện
3 Ghi tập tin bằng FileStream và StreamWriter
Hình 1.1 Đồng bộ (Synchronous) và Bất đồng bộ (Asynchronous)
Trang 133.1 Ghi tập tin bằng FileStream
Phương pháp thông thường
Phương pháp bất đồng bộ
Bước 1: Khai báo biến
Bước 2: Xây dựng phương thức bất đồng bộ
Bước 3: Xử lý sự kiện
Phương pháp đa tuyến trình
Bước 1: Xây dựng phương thức cho tuyến trình ghi dữ liệu
Trang 14Bước 2: Xử lý sự kiện
3.2 Ghi tập tin bằng StreamWriter
Phương pháp thông thường
Phương pháp bất đồng bộ
Trang 15 Phương pháp đa tuyến trình
Bước 1: Xây dựng phương thức cho tuyến trình ghi dữ liệu
Bước 2: Xử lý sự kiện
4 Xử lý tập tin và thư mục bằng FileInfo và DirectoryInfo
4.1 Kiểm tra tồn tại
Kiểm tra tập tin tồn tại
Trang 16Bảng 1.1 Một số thuộc tính/phương thức của FileInfo
Directory Trả về thư mục (DirectoryInfo) chứa tập tin
DirectoryName Trả về tên của thư mục chứa tập tin
IsReadOnly Đọc/Ghi thuộc tính chỉ đọc của tập tin
Length Kích thước của tập tin
FullName Tên đầy đủ (bao gồm ổ đĩa, thư mục và tên) của tập tin
Exists Kiểm tra tập tin tồn tại
MoveTo Di chuyển tập tin đến thư mục khác
CopyTo Sao chép tập tin đến thư mục khác
Kiểm tra thư mục tồn tại
Bảng 1.2 Một số thuộc tính/phương thức của DirectoryInfo
Parent Trả về thư mục cha
GetFiles Trả về danh sách tập tin (FileInfo)
GetDirectories Trả về danh sách thư mục
MoveTo Di chuyển đến thư mục khác
4.2 Duyệt danh sách tập tin, thư mục
Dùng phương thức GetFiles để đọc danh sách tập tin trongDirectoryInfo
Dùng phương thức GetDirectories để đọc danh sách thư mục trongDirectoryInfo
Ví dụ:
Trang 17CÂU HỎI, BÀI TẬP
1.1 Tạo ứng dụng đọc/ghi tập tin text tương tự NodePad
1.2 Tạo ứng dụng quản lý thư mục/tập tin tương tự Windows Explorer
Sử dụng TreeView, ListView
Cho phép tạo/xóa/di chuyển/sao chép/đổi tên thư mục
Cho phép xóa/di chuyển/sao chép/đổi tên tập tin
Khi click đôi chuột lên tên tập tin (.txt) thì hiển thị ứng dụng 1.1 cho phépxem và sửa nội dung của tập tin đó
YÊU CẦU KIỂM TRA, ĐÁNH GIÁ KẾT QUẢ HỌC TẬP
Sử dụng lớp FileStream, StreamReader, StreamWriter
Lập trình xử lý bất đồng bộ
Xử lý trên TreeView, ListView
Trang 18BÀI 2: TẠO ỨNG DỤNG ĐA TUYẾN TRÌNH
Biết kiến thức và kỹ năng lập trình với các tuyến trình
Tạo được ứng dụng đa tuyến trình
Đảm bảo không còn tuyến trình tồn tại sau khi thoát ứng dụng
5 Tạo ứng dụng đa tuyến trình
Bước 1: Xây dựng phương thức thực thi của Thread
Bước 2: Tạo đối tượng Thread kèm theo phương thức thực thi
Bước 3: Gọi phương thức Start của Thread
Trang 19Ví dụ:
6 Thay đổi trạng thái của tuyến trình
Đặt trạng thái chờ (tạm dừng với thời hạn biết trước): Sleep(<thờigian>);
o <thời gian>: tính bằng mili-giây
Trang 20 Tạm dừng vô thời hạn: Suspend();
Khởi động lại (trước đó đã Suspend): Resume();
Hủy tiến trình:Abort();
Ví dụ:
Trang 217 Đọc thông tin và gán tên cho tuyến trình
Lớp Thread cung cấp rất nhiều phương thức để đọc thông tin chi tiết của tuyếntrình đang hoạt động
IsAlive: xác định tuyến trình còn hoạt động hay không
Priority: xác định độ ưu tiên của tuyến trình
threadState: xác định trạng thái của tuyến trình
CurrentThread: trả về tuyến trình hiện hành
Name: xác định, đặt tên cho tuyến trình
GetHashCode(): trả về định danh (duy nhất, kiểu int) tương ứng với tuyếntrình
Ví dụ:
Trang 22CÂU HỎI, BÀI TẬP
2.1 Tạo ứng dụng đếm số ký tự/từ trong textbox (sử dụng đa tuyến trình, không
sử dụng sự kiện TextChanged)
2.2 Tạo ứng dụng giả lập truyền file trên mạng (sử dụng đa tuyến trình)
Trang 23BÀI 3: LÀM VIỆC VỚI SOCKET
Biết các kiến thức về lập trình Socket, TCP/IP
Tạo được ứng dụng mạng Client-Server với giao thức TCP/IP
Tạo được ứng dụng mạng Client-Server với Socket
Cẩn thận, làm việc nhóm, an toàn cho máy tính
Nội dung:
1 Tạo ứng dụng mạng đơn giản đầu tiên
1.1 Tạo UDP Client
1.2 Tạo UDP Server
Bước 1: Viết phương thức cho tuyến trình nhận dữ liệu
Trang 24Bước 2: Xử lý sự kiện
8 Truyền tin bằng giao thức TCP/IP
2.1 Xử lý trên Client
Trang 252.2 Xử lý trên Server
Bước 1: Tạo phương thức cho tuyến trình ghi tập tin nhận được từ Socket
Bước 2: Tạo phương thức cho tuyến trình lắng nghe kết nối
Trang 26Bước 3: Xử lý sự kiện
CÂU HỎI, BÀI TẬP
3.1 Tạo ứng dụng nhắn tin/gửi file trên Client-Server
3.2 Tạo ứng dụng chơi cờ caro (2 người chơi trên mạng)
YÊU CẦU KIỂM TRA, ĐÁNH GIÁ KẾT QUẢ HỌC TẬP
Sử dụng FileStream, StreamReader, StreamWriter
Gửi/nhận dữ liệu trên Socket và TCP/IP
Trang 27BÀI 4: TẠO WEB BROWSER
Mã bài: 32.4
Giới thiệu:
Một trong những giao thức ứng dụng mạng phổ biến được sử dụng hiệnnay là HTTP Trong bài này, chúng ta sẽ tìm hiểu và tạo trình duyệt đơn giảnhiển thị tài liệu HTML nhận được từ Web Server
Mục tiêu:
Biết các kiến thức và kỹ lập trình truyền thông với giao thức HTTP
Tạo được trình duyệt web đơn giản
Tạo được Web Server đơn giản
Cẩn thận, làm việc nhóm, an toàn cho máy tính
Nội dung:
1 Tạo HTTP Client (Web Browser)
1.1 Giao diện
Kịch bản: Nhập URLcần truy cập vào ô “Địa chỉ”, click chuột lên nút lệnh
“Go” Ứng dụng sẽ hiển thị tài liệu HTML nhận được từ Web Server
Trang 281.2 Nhận tài liệu HTML từ Web Server
2 Tạo HTTP Server (Web Server)
Bước 1: Giao diện form của HTTP Server gồm: 2 TextBox (txtPath và txtPort),Button (btnStart), ListBox (lstConnections)
Bước 2: Khai báo sử dụng thư viện
Bước 3: Khai báo đối tượng alSockets chứa các kết nối
Trang 29Bước 4: Xử lý sự kiện Form Load
Bước 5: Tuyến trình trả kết quả cho Client
Trang 30Bước 6: Tuyến trình xử lý tiếp nhận một kết nối
Bước 7: Xử lý sự kiện click chuột lên nút lệnh (Bắt đầu dịch vụ)
CÂU HỎI, BÀI TẬP
4.1 Tạo HTTP Server đáp ứng theo yêu cầu trả về tập tin index.html trong thưmục tương ứng với URL nhận được từ HTTP Client
4.2 Tạo HTTP Client cho phép nhập URL và nhận kết quả từ HTTP Server ởcâu trên
Trang 31TÀI LIỆU THAM KHẢO
[1] Fiach Reid – Network Programming in NET [2] Richard Blum - C# Network Programming