Apa cara tercepat dan paling efisien untuk memeriksa konektivitas Internet di .NET?
Windows NLM API
harus menjadi yang terbaik untuk ini. stackoverflow.com/questions/5405895/…
Apa cara tercepat dan paling efisien untuk memeriksa konektivitas Internet di .NET?
Windows NLM API
harus menjadi yang terbaik untuk ini. stackoverflow.com/questions/5405895/…
Jawaban:
Sesuatu seperti ini seharusnya bekerja.
public static bool CheckForInternetConnection()
{
try
{
using (var client = new WebClient())
using (client.OpenRead("http://google.com/generate_204"))
return true;
}
catch
{
return false;
}
}
I cannot image a world where www.google.com does not return some HTML
di Tiongkok misalnya ...
Sama sekali tidak ada cara Anda dapat dengan andal memeriksa apakah ada koneksi internet atau tidak (saya berasumsi maksud Anda adalah akses ke internet).
Namun, Anda dapat meminta sumber daya yang hampir tidak pernah luring, seperti melakukan ping google.com atau yang serupa. Saya pikir ini akan efisien.
try {
Ping myPing = new Ping();
String host = "google.com";
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOptions = new PingOptions();
PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
return (reply.Status == IPStatus.Success);
}
catch (Exception) {
return false;
}
8.8.8.8
atau 8.8.4.4
) berfungsi dengan baik untuk saya.
Beware - many schools and offices block the ping protocol.
jika Anda menggunakan metode ini untuk aplikasi yang akan digunakan oleh klien, saya akan menyarankan agar metode ini tidak memeriksa internet
Alih-alih memeriksa, lakukan saja tindakan (permintaan web, mail, ftp, dll.) Dan bersiaplah untuk permintaan gagal, yang harus Anda lakukan pula, bahkan jika cek Anda berhasil.
Pertimbangkan yang berikut ini:
1 - check, and it is OK
2 - start to perform action
3 - network goes down
4 - action fails
5 - lot of good your check did
Jika jaringan tidak aktif, tindakan Anda akan gagal secepat ping, dll.
1 - start to perform action
2 - if the net is down(or goes down) the action will fail
NetworkInterface.GetIsNetworkAvailable
sangat tidak bisa diandalkan. Hanya memiliki beberapa VMware atau koneksi LAN lainnya dan itu akan mengembalikan hasil yang salah. Juga tentang Dns.GetHostEntry
metode saya hanya khawatir tentang apakah URL pengujian mungkin diblokir di lingkungan tempat aplikasi saya akan digunakan.
Jadi cara lain yang saya temukan adalah menggunakan InternetGetConnectedState
metode. Kode saya adalah
[System.Runtime.InteropServices.DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);
public static bool CheckNet()
{
int desc;
return InternetGetConnectedState(out desc, 0);
}
Tes untuk koneksi internet dengan melakukan ping ke Google:
new Ping().Send("www.google.com.mx").Status == IPStatus.Success
Saya tidak setuju dengan orang-orang yang menyatakan: "Apa gunanya memeriksa konektivitas sebelum melakukan tugas, segera setelah pemeriksaan koneksi mungkin hilang". Tentunya ada tingkat ketidakpastian dalam banyak tugas pemrograman yang kami selaku pengembang lakukan, tetapi mengurangi ketidakpastian ke tingkat penerimaan adalah bagian dari tantangan.
Saya baru-baru ini mengalami masalah membuat aplikasi yang termasuk fitur pemetaan yang ditautkan ke server ubin online. Fungsi ini harus dinonaktifkan di mana kurangnya konektivitas internet dicatat.
Beberapa respons pada halaman ini sangat baik, tetapi bagaimanapun menyebabkan banyak masalah kinerja seperti menggantung, terutama dalam kasus tidak adanya konektivitas.
Inilah solusi yang akhirnya saya gunakan, dengan bantuan beberapa jawaban ini dan kolega saya:
// Insert this where check is required, in my case program start
ThreadPool.QueueUserWorkItem(CheckInternetConnectivity);
}
void CheckInternetConnectivity(object state)
{
if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
using (WebClient webClient = new WebClient())
{
webClient.CachePolicy = new System.Net.Cache.RequestCachePolicy(System.Net.Cache.RequestCacheLevel.BypassCache);
webClient.Proxy = null;
webClient.OpenReadCompleted += webClient_OpenReadCompleted;
webClient.OpenReadAsync(new Uri("<url of choice here>"));
}
}
}
volatile bool internetAvailable = false; // boolean used elsewhere in code
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error == null)
{
internetAvailable = true;
Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
{
// UI changes made here
}));
}
}
Saya telah melihat semua opsi yang tercantum di atas dan satu-satunya pilihan untuk memeriksa apakah internet tersedia atau tidak adalah opsi "Ping". Mengimpor [DllImport("Wininet.dll")]
dan System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()
Atau variasi lain dari NetworkInterface
kelas tidak berfungsi dengan baik dalam mendeteksi ketersediaan jaringan. Metode ini hanya memeriksa apakah kabel jaringan dicolokkan atau tidak.
"Opsi Ping"
if
(Koneksi tersedia) kembali true
if
(Koneksi tidak tersedia dan kabel jaringan terhubung) kembali false
if
(Kabel jaringan tidak dicolokkan) Throws an exception
NetworkInterface
if
(Internet Tersedia) Pengembalian True
if
(Internet tidak tersedia dan Kabel Jaringan Dicolokkan) Kembali True
if
(Kabel Jaringan Tidak Dicolokkan) kembali false
The [DllImport ("Wininet.dll" ")]
if
(Internet Tersedia) Pengembalian True
if
(Internet tidak tersedia dan Kabel Jaringan Dicolokkan) Kembali True
if
(Kabel Jaringan Tidak Dicolokkan) kembali false
Jadi dalam kasus [DllImport("Wininet.dll")]
dan NetworkInterface
Tidak ada cara untuk mengetahui apakah koneksi internet tersedia.
Tidak memecahkan masalah jaringan antara memeriksa dan menjalankan kode Anda tetapi cukup dapat diandalkan
public static bool IsAvailableNetworkActive()
{
// only recognizes changes related to Internet adapters
if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
// however, this will include all adapters -- filter by opstatus and activity
NetworkInterface[] interfaces = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
return (from face in interfaces
where face.OperationalStatus == OperationalStatus.Up
where (face.NetworkInterfaceType != NetworkInterfaceType.Tunnel) && (face.NetworkInterfaceType != NetworkInterfaceType.Loopback)
select face.GetIPv4Statistics()).Any(statistics => (statistics.BytesReceived > 0) && (statistics.BytesSent > 0));
}
return false;
}
Pinging google.com memperkenalkan ketergantungan resolusi DNS. Ping 8.8.8.8 baik-baik saja tetapi Google berjarak beberapa lompatan dari saya. Yang perlu saya lakukan hanyalah melakukan ping ke hal terdekat yang ada di internet.
Saya dapat menggunakan fitur TTL Ping untuk ping hop # 1, lalu hop # 2, dll, hingga saya mendapatkan balasan dari sesuatu yang ada di alamat yang bisa dirutekan; jika simpul itu ada pada alamat yang bisa dirutekan maka simpul itu ada di internet. Bagi kebanyakan dari kita, hop # 1 akan menjadi gateway / router lokal kita, dan hop # 2 akan menjadi titik pertama di sisi lain dari koneksi fiber kita atau apa pun.
Kode ini berfungsi untuk saya, dan merespons lebih cepat daripada beberapa saran lain di utas ini karena melakukan ping apa pun yang terdekat dengan saya di internet.
using System.Net;
using System.Net.Sockets;
using System.Net.NetworkInformation;
using System.Diagnostics;
internal static bool ConnectedToInternet()
{
const int maxHops = 30;
const string someFarAwayIpAddress = "8.8.8.8";
// Keep pinging further along the line from here to google
// until we find a response that is from a routable address
for (int ttl = 1; ttl <= maxHops; ttl++)
{
Ping pinger = new Ping();
PingOptions options = new PingOptions(ttl, true);
byte[] buffer = new byte[32];
PingReply reply = null;
try
{
reply = pinger.Send(someFarAwayIpAddress, 10000, buffer, options);
}
catch (System.Net.NetworkInformation.PingException pingex)
{
Debug.Print("Ping exception (probably due to no network connection or recent change in network conditions), hence not connected to internet. Message: " + pingex.Message);
return false;
}
System.Diagnostics.Debug.Print("Hop #" + ttl.ToString() + " is " + (reply.Address == null ? "null" : reply.Address.ToString()) + ", " + reply.Status.ToString());
if (reply.Status != IPStatus.TtlExpired && reply.Status != IPStatus.Success)
{
Debug.Print("Hop #" + ttl.ToString() + " is " + reply.Status.ToString() + ", hence we are not connected.");
return false;
}
if (IsRoutableAddress(reply.Address))
{
System.Diagnostics.Debug.Print("That's routable so you must be connected to the internet.");
return true;
}
}
return false;
}
private static bool IsRoutableAddress(IPAddress addr)
{
if (addr == null)
{
return false;
}
else if (addr.AddressFamily == AddressFamily.InterNetworkV6)
{
return !addr.IsIPv6LinkLocal && !addr.IsIPv6SiteLocal;
}
else // IPv4
{
byte[] bytes = addr.GetAddressBytes();
if (bytes[0] == 10)
{ // Class A network
return false;
}
else if (bytes[0] == 172 && bytes[1] >= 16 && bytes[1] <= 31)
{ // Class B network
return false;
}
else if (bytes[0] == 192 && bytes[1] == 168)
{ // Class C network
return false;
}
else
{ // None of the above, so must be routable
return true;
}
}
}
Inilah cara penerapannya di Android.
Sebagai bukti konsep, saya menerjemahkan kode ini ke C #:
var request = (HttpWebRequest)WebRequest.Create("http://g.cn/generate_204");
request.UserAgent = "Android";
request.KeepAlive = false;
request.Timeout = 1500;
using (var response = (HttpWebResponse)request.GetResponse())
{
if (response.ContentLength == 0 && response.StatusCode == HttpStatusCode.NoContent)
{
//Connection to internet available
}
else
{
//Connection to internet not available
}
}
private bool ping()
{
System.Net.NetworkInformation.Ping pingSender = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingReply reply = pingSender.Send(address);
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
{
return true;
}
else
{
return false;
}
}
Opsi lain adalah Network List Manager API yang tersedia untuk Vista dan Windows 7. Artikel MSDN di sini . Dalam artikel tersebut ada tautan untuk mengunduh contoh kode yang memungkinkan Anda melakukan ini:
AppNetworkListUser nlmUser = new AppNetworkListUser();
Console.WriteLine("Is the machine connected to internet? " + nlmUser.NLM.IsConnectedToInternet.ToString());
Pastikan untuk menambahkan referensi ke Network List 1.0 Type Library dari tab COM ... yang akan ditampilkan sebagai NETWORKLIST.
Cobalah untuk menghindari menguji koneksi dengan menangkap pengecualian. karena kami benar-benar Berharap bahwa kadang-kadang kami dapat kehilangan koneksi jaringan.
if (NetworkInterface.GetIsNetworkAvailable() &&
new Ping().Send(new IPAddress(new byte[] { 8, 8, 8, 8 }),2000).Status == IPStatus.Success)
//is online
else
//is offline
Jika Anda ingin memberi tahu pengguna / mengambil tindakan setiap kali terjadi perubahan jaringan / koneksi.
Gunakan API NLM:
Saya pribadi menemukan jawaban Anton dan moffeltje terbaik, tetapi saya menambahkan cek untuk mengecualikan jaringan virtual yang dibuat oleh VMWare dan yang lainnya.
public static bool IsAvailableNetworkActive()
{
// only recognizes changes related to Internet adapters
if (!System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) return false;
// however, this will include all adapters -- filter by opstatus and activity
NetworkInterface[] interfaces = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
return (from face in interfaces
where face.OperationalStatus == OperationalStatus.Up
where (face.NetworkInterfaceType != NetworkInterfaceType.Tunnel) && (face.NetworkInterfaceType != NetworkInterfaceType.Loopback)
where (!(face.Name.ToLower().Contains("virtual") || face.Description.ToLower().Contains("virtual")))
select face.GetIPv4Statistics()).Any(statistics => (statistics.BytesReceived > 0) && (statistics.BytesSent > 0));
}
bool bb = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
if (bb == true)
MessageBox.Show("Internet connections are available");
else
MessageBox.Show("Internet connections are not available");
bb
masih benar bahkan ketika jaringan tidak terhubung ke internet.
Versi ping multi-utas:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net.NetworkInformation;
using System.Threading;
namespace OnlineCheck
{
class Program
{
static bool isOnline = false;
static void Main(string[] args)
{
List<string> ipList = new List<string> {
"1.1.1.1", // Bad ip
"2.2.2.2",
"4.2.2.2",
"8.8.8.8",
"9.9.9.9",
"208.67.222.222",
"139.130.4.5"
};
int timeOut = 1000 * 5; // Seconds
List<Thread> threadList = new List<Thread>();
foreach (string ip in ipList)
{
Thread threadTest = new Thread(() => IsOnline(ip));
threadList.Add(threadTest);
threadTest.Start();
}
Stopwatch stopwatch = Stopwatch.StartNew();
while (!isOnline && stopwatch.ElapsedMilliseconds <= timeOut)
{
Thread.Sleep(10); // Cooldown the CPU
}
foreach (Thread thread in threadList)
{
thread.Abort(); // We love threads, don't we?
}
Console.WriteLine("Am I online: " + isOnline.ToYesNo());
Console.ReadKey();
}
static bool Ping(string host, int timeout = 3000, int buffer = 32)
{
bool result = false;
try
{
Ping ping = new Ping();
byte[] byteBuffer = new byte[buffer];
PingOptions options = new PingOptions();
PingReply reply = ping.Send(host, timeout, byteBuffer, options);
result = (reply.Status == IPStatus.Success);
}
catch (Exception ex)
{
}
return result;
}
static void IsOnline(string host)
{
isOnline = Ping(host) || isOnline;
}
}
public static class BooleanExtensions
{
public static string ToYesNo(this bool value)
{
return value ? "Yes" : "No";
}
}
}
Saya tidak akan berpikir itu tidak mungkin, hanya saja tidak langsung.
Saya telah membangun sesuatu seperti ini, dan ya itu tidak sempurna, tetapi langkah pertama sangat penting: untuk memeriksa apakah ada konektivitas jaringan. Windows Api tidak melakukan pekerjaan dengan baik, jadi mengapa tidak melakukan pekerjaan yang lebih baik?
bool NetworkIsAvailable()
{
var all = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces();
foreach (var item in all)
{
if (item.NetworkInterfaceType == NetworkInterfaceType.Loopback)
continue;
if (item.Name.ToLower().Contains("virtual") || item.Description.ToLower().Contains("virtual"))
continue; //Exclude virtual networks set up by VMWare and others
if (item.OperationalStatus == OperationalStatus.Up)
{
return true;
}
}
return false;
}
Ini cukup sederhana, tetapi sangat membantu meningkatkan kualitas pemeriksaan, terutama ketika Anda ingin memeriksa berbagai konfigurasi proxy.
Begitu:
public static bool Isconnected = false;
public static bool CheckForInternetConnection()
{
try
{
Ping myPing = new Ping();
String host = "google.com";
byte[] buffer = new byte[32];
int timeout = 1000;
PingOptions pingOptions = new PingOptions();
PingReply reply = myPing.Send(host, timeout, buffer, pingOptions);
if (reply.Status == IPStatus.Success)
{
return true;
}
else if (reply.Status == IPStatus.TimedOut)
{
return Isconnected;
}
else
{
return false;
}
}
catch (Exception)
{
return false;
}
}
public static void CheckConnection()
{
if (CheckForInternetConnection())
{
Isconnected = true;
}
else
{
Isconnected = false;
}
}
Gunakan NetworkMonitor untuk memantau keadaan jaringan dan koneksi internet.
Sampel:
namespace AmRoNetworkMonitor.Demo
{
using System;
internal class Program
{
private static void Main()
{
NetworkMonitor.StateChanged += NetworkMonitor_StateChanged;
NetworkMonitor.StartMonitor();
Console.WriteLine("Press any key to stop monitoring.");
Console.ReadKey();
NetworkMonitor.StopMonitor();
Console.WriteLine("Press any key to close program.");
Console.ReadKey();
}
private static void NetworkMonitor_StateChanged(object sender, StateChangeEventArgs e)
{
Console.WriteLine(e.IsAvailable ? "Is Available" : "Is Not Available");
}
}
}
pengantar
Dalam beberapa skenario Anda perlu memeriksa apakah internet tersedia atau tidak menggunakan kode C # di aplikasi windows. Mungkin untuk mengunduh atau mengunggah file menggunakan internet dalam bentuk windows atau untuk mendapatkan beberapa data dari database yang berada di lokasi terpencil, dalam situasi ini pemeriksaan internet adalah wajib.
Ada beberapa cara untuk memeriksa ketersediaan internet menggunakan C # dari kode di belakang. Semua cara tersebut dijelaskan di sini termasuk batasannya.
API 'wininet' dapat digunakan untuk memeriksa apakah sistem lokal memiliki koneksi internet aktif atau tidak. Namespace yang digunakan untuk ini adalah 'System.Runtime.InteropServices' dan impor dll 'wininet.dll' menggunakan DllImport. Setelah ini buat variabel boolean dengan extern static dengan nama fungsi InternetGetConnectedState dengan dua parameter deskripsi dan reservedValue seperti yang ditunjukkan dalam contoh.
Catatan: Pengubah extern digunakan untuk mendeklarasikan metode yang diterapkan secara eksternal. Penggunaan umum pengubah extern adalah dengan atribut DllImport ketika Anda menggunakan layanan Interop untuk memanggil kode yang tidak dikelola. Dalam hal ini, metode ini juga harus dinyatakan sebagai statis.
Selanjutnya buat metode dengan nama 'IsInternetAvailable' sebagai boolean. Fungsi di atas akan digunakan dalam metode ini yang mengembalikan status internet sistem lokal
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int description, int reservedValue);
public static bool IsInternetAvailable()
{
try
{
int description;
return InternetGetConnectedState(out description, 0);
}
catch (Exception ex)
{
return false;
}
}
Contoh berikut menggunakan metode GetIsNetworkAvailable untuk menentukan apakah koneksi jaringan tersedia.
if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable())
{
System.Windows.MessageBox.Show("This computer is connected to the internet");
}
else
{
System.Windows.MessageBox.Show("This computer is not connected to the internet");
}
Keterangan (Sesuai MSDN): Koneksi jaringan dianggap tersedia jika antarmuka jaringan ditandai "naik" dan bukan antarmuka loopback atau terowongan.
Ada banyak kasus di mana perangkat atau komputer tidak terhubung ke jaringan yang bermanfaat tetapi masih dianggap tersedia dan GetIsNetworkAvailable akan kembali benar. Misalnya, jika perangkat yang menjalankan aplikasi terhubung ke jaringan nirkabel yang memerlukan proxy, tetapi proxy tidak disetel, GetIsNetworkAvailable akan mengembalikan true. Contoh lain ketika GetIsNetworkAvailable akan kembali benar adalah jika aplikasi berjalan pada komputer yang terhubung ke hub atau router di mana hub atau router telah kehilangan koneksi hulu.
Kelas Ping dan PingReply memungkinkan aplikasi untuk menentukan apakah komputer jarak jauh dapat diakses melalui jaringan dengan mendapatkan balasan dari tuan rumah. Kelas-kelas ini tersedia di namespace System.Net.NetworkInformation. Contoh berikut menunjukkan cara melakukan ping host.
protected bool CheckConnectivity(string ipAddress)
{
bool connectionExists = false;
try
{
System.Net.NetworkInformation.Ping pingSender = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions();
options.DontFragment = true;
if (!string.IsNullOrEmpty(ipAddress))
{
System.Net.NetworkInformation.PingReply reply = pingSender.Send(ipAddress);
connectionExists = reply.Status ==
System.Net.NetworkInformation.IPStatus.Success ? true : false;
}
}
catch (PingException ex)
{
Logger.LogException(ex.Message, ex);
}
return connectionExists;
}
Keterangan (Sesuai MSDN): Aplikasi menggunakan kelas Ping untuk mendeteksi apakah komputer jarak jauh dapat dijangkau. Topologi jaringan dapat menentukan apakah Ping berhasil menghubungi host jarak jauh. Kehadiran dan konfigurasi proksi, peralatan terjemahan alamat jaringan (NAT), atau firewall dapat mencegah Ping dari berhasil. Ping yang berhasil hanya menunjukkan bahwa host jarak jauh dapat dijangkau di jaringan; keberadaan layanan tingkat yang lebih tinggi (seperti server Web) pada host jarak jauh tidak dijamin.
Komentar / Saran diundang. Selamat coding ......!
Untuk aplikasi saya, kami juga menguji dengan mengunduh file kecil.
string remoteUri = "https://www.microsoft.com/favicon.ico"
WebClient myWebClient = new WebClient();
try
{
byte[] myDataBuffer = myWebClient.DownloadData (remoteUri);
if(myDataBuffer.length > 0) // Or add more validate. eg. checksum
{
return true;
}
}
catch
{
return false;
}
Juga. Beberapa ISP dapat menggunakan server tengah untuk menyimpan file cache. Tambahkan parameter acak yang tidak digunakan misalnya. https://www.microsoft.com/favicon.ico?req=random_number Dapat mencegah caching.
Saya mengalami masalah pada metode tersebut pada Router / modem 3g saya, karena jika internet terputus router mengalihkan halaman ke halaman responnya, jadi Anda masih mendapatkan uap dan kode Anda berpikir ada internet. Apel (atau yang lain) memiliki halaman pemotongan hot spot yang selalu mengembalikan respons tertentu. Sampel berikut mengembalikan respons "Sukses". Jadi, Anda akan benar-benar yakin Anda bisa menghubungkan internet dan mendapatkan respons nyata!
public static bool CheckForInternetConnection()
{
try
{
using (var webClient = new WebClient())
using (var stream = webClient.OpenRead("http://captive.apple.com/hotspot-detect.html"))
{
if (stream != null)
{
//return true;
stream.ReadTimeout = 1000;
using (var reader = new StreamReader(stream, Encoding.UTF8, false))
{
string line;
while ((line = reader.ReadLine()) != null)
{
if (line == "<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>")
{
return true;
}
Console.WriteLine(line);
}
}
}
return false;
}
}
catch
{
}
return false;
}
Saya memiliki tiga tes untuk koneksi Internet.
System.Net
danSystem.Net.Sockets
Tes 1
public bool IsOnlineTest1()
{
try
{
IPHostEntry dummy = Dns.GetHostEntry("https://www.google.com");
return true;
}
catch (SocketException ex)
{
return false;
}
}
Tes 2
public bool IsOnlineTest2()
{
try
{
IPHostEntry dummy = Dns.GetHostEntry("https://www.google.com");
return true;
}
catch (SocketException ex)
{
return false;
}
}
Tes 3
public bool IsOnlineTest3()
{
System.Net.WebRequest req = System.Net.WebRequest.Create("https://www.google.com");
System.Net.WebResponse resp = default(System.Net.WebResponse);
try
{
resp = req.GetResponse();
resp.Close();
req = null;
return true;
}
catch (Exception ex)
{
req = null;
return false;
}
}
Melakukan tes
Jika Anda membuat Dictionary
dari String
dan Boolean
disebut CheckList
, Anda dapat menambahkan hasil dari setiap tes untuk CheckList
.
Sekarang, ulangi setiap KeyValuePair
menggunakan for...each
loop.
Jika CheckList
mengandung Value
dari true
, maka Anda tahu ada koneksi internet.
public static bool HasConnection()
{
try
{
System.Net.IPHostEntry i = System.Net.Dns.GetHostEntry("www.google.com");
return true;
}
catch
{
return false;
}
}
Itu bekerja