C# – Kiểm tra sự tồn tại của các địa chỉ Internet

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 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:

Check Address Available_Figure

Check Address Available_Figure

Giao diện trên gồm 1 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ứ 2 (true hoặc false).

Trước tiên bạn cần tham chiếu đến namesapce 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ứ 2 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 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.

http://yinyang-it.tk
2/7/2009

Advertisements

2 thoughts on “C# – Kiểm tra sự tồn tại của các địa chỉ Internet

  1. Chào bạn, bài trên đã bao gồm các đoạn code chính, phần còn lại chỉ là phần thiết kế form. Bạn có thể nói cụ thể vấn đề xảy ra trên dự án của mình ra để cùng giải đáp không?

    Phản hồi

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s