Trang 1 trên 1

[C#]Kiểm tra trạng thái kết nối Internet

Đã gửi: T.Sáu 30/01/2009 5:07 pm
gửi bởi neverland87
Thủ thuật: Kiểm tra trạng thái kết nối Internet
Tác giả: neverland87
Mô tả:


Trong bài viết này, mình sẽ chỉ 2 cách để kiểm tra trạng thái kết nối Internet có thông hay không? Trước khi đi vào code, chúng ta tạo 1 project C#, thêm 1 button (button1) lên form chính nhé.
- Cách 1: Dùng API
+ Vào menu Project\Add Class... để tạo class InternetConnection
+ Import namespace:
using System.Runtime.InteropServices;
+ Class InternetConnection có 2 phương thức sau:

Mã: Chọn hết

  1. class InternetConnection
  2.     {
  3.         [DllImport("wininet.dll")]
  4.         private extern static bool InternetGetConnectedState(out int description, int reservedValue);
  5.         public static bool IsConnectedToInternet()
  6.         {
  7.             int desc;
  8.             return InternetGetConnectedState(out desc, 0);
  9.         }
  10.     }


+ Thụ lý tình huống Click của button1 như sau:

Mã: Chọn hết

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             if (InternetConnection.IsConnectedToInternet())
  4.             {
  5.                 MessageBox.Show("Tình trạng kết nối: OK!");
  6.             }
  7.             else
  8.             {
  9.                 MessageBox.Show("Tình trạng kết nối: Mất!");
  10.             }
  11.         }


- Cách 2: Kiểm tra kết nối Internet bằng cách ping đến 1 host trên internet. Chúng ta tạo phương thức sau trong Project vừa tạo. Chú ý: nhớ using System.Net.NetworkInformation; để sử dụng class Ping.

Mã: Chọn hết

  1. public bool IsConnectedToInternet(string host)
  2.         {
  3.             Ping p = new Ping();
  4.             try
  5.             {
  6.                 PingReply pr = p.Send(host, 3000);
  7.                 if (pr.Status == IPStatus.Success)
  8.                 {
  9.                     return true;
  10.                 }
  11.             }
  12.             catch (Exception)
  13.             {
  14.  
  15.                
  16.             }
  17.             return false;
  18.         }


Cuối cùng, thụ lý tình huống Click của button1 như sau:

Mã: Chọn hết

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             if (IsConnectedToInternet("caulacbovb.com"))
  4.             {
  5.                 MessageBox.Show("Tình trạng kết nối: OK!");
  6.             }
  7.             else
  8.             {
  9.                 MessageBox.Show("Tình trạng kết nối: Mất!");
  10.             }
  11.         }


Mình đã thử disable card mạng, và kết quả là thành công như ý muốn với 2 cách trên. Thứ hai là dùng cách 1 nhanh hơn so với cách 2. $-)

Re: [C#]Kiểm tra trạng thái kết nối Internet

Đã gửi: T.Sáu 30/01/2009 5:28 pm
gửi bởi vo_minhdat2007
Bộ C# dùng Application Event như bài này không được hả anh? Em thấy nó đơn giản mà hiệu quả!

Re: [C#]Kiểm tra trạng thái kết nối Internet

Đã gửi: T.Sáu 30/01/2009 9:51 pm
gửi bởi neverland87
vo_minhdat2007 đã viết:Bộ C# dùng Application Event như bài này không được hả anh? Em thấy nó đơn giản mà hiệu quả!

C# không có em ơi :D

Re: [C#]Kiểm tra trạng thái kết nối Internet

Đã gửi: T.Bảy 31/01/2009 8:06 pm
gửi bởi tienlbhoc
Lấy từ đây chứ đâu : microsoft.visualbasic.dll
add nó vào c# rồi làm được tuốt (cái thư viện này có cái single instant với cái wild card mà c# không hiểu sao không hỗ trợ ).
Có lẽ do nó không còn tốt nữa (vb cùi bắp mà) , c# thay wild card (stupid) bằng regular , còn cái single instant bằng mutex
Nhưng nói thực là dùng cái đó vẫn dễ xơi hơn :D .
Tuy không có trong c# nhưng bốc sang c# lúc nào cũng được => c# linh hoạt hơn , định hướng tốt hơn => better.
Neverland làm xấu mặt dân c# :P
http://msdn.microsoft.com/en-us/library/ms229163(VS.80).aspx

Re: [C#]Kiểm tra trạng thái kết nối Internet

Đã gửi: CN 13/05/2012 3:35 pm
gửi bởi tim_tai_lieu
Các anh, chị cho em hỏi về viết hàm c# để làm một chương trình chạy cùng window để kiểm tra kết nối internet. Cụ thể:
- Khi chương trình C# này hoạt động thì nó sẽ kiểm tra xem nếu có Internet thì thông báo là "có kết nối internet" và vẫn hoạt động khi ko có internet thì xuất hiện "mất kết nối internet" ... cứ liên tục như thế.
- Khi máy tính không kết nối internet thì xuất hiện thông báo "không có kết nối internet" và vẫn hoạt động khi có internet thì thông báo "có kết nối internet" ... cứ liên tục hoạt động như thế.
[...] Mong mọi người nhiệt tình giúp đỡ em với :)

Re: [C#]Kiểm tra trạng thái kết nối Internet

Đã gửi: T.Năm 24/07/2014 12:44 pm
gửi bởi miucon20
Chuyển sang vbnet như nào nhỉ