Kiểm tra sự tồn tại địa chỉ Internet
Posted: 17/8/2009.
Bạn có một danh sách các địa chỉ Internet và muốn kiểm tra xem các đường dẫn còn hiệu lực hay không. Có một cách đơn giản để làm điều này trong .NET framework là sử dụng một số lớp trong namespace System.Net.NetworkInformation. Cụ thể chúng ta sẽ dùng cách thức ping như trong Command Line đến địa chỉ cần xác thực và kiểm tra kết quả trả về.
Bạn có một danh sách các địa chỉ Internet và muốn kiểm tra xem các đường dẫn còn hiệu lực hay không. Có một cách đơn giản để làm điều này trong .NET framework là sử dụng một số lớp trong namespace System.Net.NetworkInformation. Cụ thể chúng ta sẽ dùng cách thức ping như trong Command Line đến địa chỉ cần xác thực và kiểm tra kết quả trả về.
Bạn có thể tạo một chương trình mẫu như sau:
Giao diện trên gồm một ListView chính có hai cột, chứa các địa chỉ cần kiểm tra.
-Khi nhấn nút Add sẽ thêm một địa chỉ từ TextBox bên cạnh vào ListView.
-Nút Check Now! dùng để tiến hành kiểm tra từng địa chỉ trong ListView và hiển thị kết quả bên cột thứ hai (true hoặc false).
Trước tiên bạn cần tham chiếu đến namespace sau:
- using System.Net.NetworkInformation;
Phương thức kiểm tra địa chỉ:
- public bool isAddressAvailable(string address)
-
- {
-
- Ping ping = new Ping();
-
- try
-
- {
-
- return ping.Send(address, 100).Status == IPStatus.Success;
-
- }
-
- catch
-
- {
-
- return false;
-
- }
-
- }
Tham số thứ hai của phương thức Send là một số kiểu int xác định thời gian (tính bằng mili giây) chờ thông điệp được gửi trả về khi chúng ta bắt đầu ping. Nếu bạn gán một giá trị quá nhỏ chẳng hạn 1/1000 giây, việc kiểm tra có thể không chính xác đối với một số địa chỉ.
Phương thức Send của lớp Ping trả về một kiểu enum IPStatus thể hiện trạng thái của địa chỉ. Enum này có khá nhiều phần từ nhưng chúng ta chỉ cần quan tâm đến IPStatus.Success, tức là việc ping đến địa chỉ này thành công và địa chỉ được xác nhận là có tồn tại.
Tiếp đến là mã lệnh cho nút Check Now. Cách làm của chungs ta là lặp qua từng hàng của ListView, kiểm tra địa chỉ ở cột đầu tiên và gán kết quả vào cột thứ hai:
- private void btnCheck_Click(object sender, EventArgs e)
-
- {
-
- foreach (ListViewItem item in listView1.Items)
-
- {
-
- Application.DoEvents();
-
- bool available = isAddressAvailable(item.Text);
-
- try
-
- {
-
- item.SubItems[1].Text = available.ToString();
-
- }
-
- catch
-
- {
-
- item.SubItems.Add(available.ToString());
-
- }
-
- if (!available)
-
- item.ForeColor = Color.Red;
-
- }
-
- }
Bạn dùng câu lệnh
-
- item.SubItems[1].Text = available.ToString();
để gán Text cho cột thứ nhất của một dòng trong ListView. Tuy nhiên nếu dòng này chưa được tạo thì sẽ xảy ra một ngoại lệ, vì vậy ta sẽ bắt ngoại lệ này và viết lệnh thêm một cột mới cho ListViewItem đang xét.
Phương thức tĩnh Application.DoEvents giúp cho việc cập nhật này được hiển thị ngay lên ListView. Nếu như không dùng phương thức này, ListView sẽ được cập nhật nội dung chỉ sau khi vòng lặp của chúng ta kết thúc.
Tham khảo: http://yinyang-it.tk
[Nghean-Aptech st]
Các tin mới:
Hướng dẫn tích hợp giao diện trang quản trị SB Admin 2 vào Laravel 5.8.
Hướng dẫn tích hợp Google ReCaptcha v2 vào Laravel bằng curl.
Học lập trình React JS trong vòng 5 phút.
Sử dụng trình soạn thảo CKeditor tích hợp CKFinder với Laravel.
Hướng dẫn cài đặt Apache, PHP, MySQL, PHPMyAdmin trên Windows 10 và cấu hình SendMail.
Các tin cũ hơn:
Công cụ lập trình cho Điện thoại di động.
Sử dụng điều kiểm ActiveX trong.NET-client.
Tránh viết mã cứng URL trong Web XML.
Sử dụng page caching và fragment caching.
Download file thông qua HTTP.