• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

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

Các thủ thuật về hệ thống, thư mục, tập tin và mạng

Điều hành viên: tungcan5diop, QUANITGROBEST

neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

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

Gửi bàigửi bởi neverland87 » T.Sáu 30/01/2009 5:07 pm

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. $-)


SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

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

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 30/01/2009 5:28 pm

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ả!

neverland87
Guru
Guru
Bài viết: 490
Ngày tham gia: T.Bảy 26/05/2007 4:31 pm
Been thanked: 8 time

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

Gửi bàigửi bởi neverland87 » T.Sáu 30/01/2009 9:51 pm

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
SIMPLY THE BEST - ĐƠN GIẢN LÀ TỐT NHẤT

tienlbhoc
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 415
Ngày tham gia: T.Bảy 14/07/2007 10:06 pm
Đến từ: Hà Nội
Been thanked: 1 time

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

Gửi bàigửi bởi tienlbhoc » T.Bảy 31/01/2009 8:06 pm

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
Diễn đàn và blog phần mềm tự làm :
http://my.opera.com/DienDanTienlbhoc/forums/
http://my.opera.com/tienlbhoc/blog/

tim_tai_lieu
Bài viết: 1
Ngày tham gia: CN 13/05/2012 3:27 pm

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

Gửi bàigửi bởi tim_tai_lieu » CN 13/05/2012 3:35 pm

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

miucon20
Thành viên tích cực
Thành viên tích cực
Bài viết: 193
Ngày tham gia: T.Sáu 04/06/2010 12:35 pm
Has thanked: 27 time
Been thanked: 1 time

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

Gửi bàigửi bởi miucon20 » T.Năm 24/07/2014 12:44 pm

Chuyển sang vbnet như nào nhỉ


Quay về “[.NET] Hệ thống - Tập tin - Thư mục và Mạng”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách