怎么判断网络连接状态和获取网络IP地址
如何判断网络连接状态和获取网络IP地址
问题1:如何判断网络已经连接(50)
问题2:获取网络IP地址(50)
要求能适应拨号上网和通过局域网上网。两种上网方式
------解决方案--------------------
IPHostEntry获取IP
你尝试连一个公共的网站,连通就可以说明网络是已经连接的了。
------解决方案--------------------
//获取IP地址
public string GetIPAddress()
{
IPAddress ip = new IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address);
return ip.ToString();
}
------解决方案--------------------
判断网络已经连接
问题1:如何判断网络已经连接(50)
问题2:获取网络IP地址(50)
要求能适应拨号上网和通过局域网上网。两种上网方式
------解决方案--------------------
IPHostEntry获取IP
你尝试连一个公共的网站,连通就可以说明网络是已经连接的了。
------解决方案--------------------
//获取IP地址
public string GetIPAddress()
{
IPAddress ip = new IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address);
return ip.ToString();
}
------解决方案--------------------
判断网络已经连接
- C# code
[DllImport("wininet.dll")] private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue); public bool IsInternetConnected() { int i = 0; return InternetGetConnectedState(out i, 0); }
------解决方案--------------------
AutoResetEvent waiter = new AutoResetEvent(false);
Ping myPing = new Ping();
myPing.PingCompleted += new PingCompletedEventHandler(myPing_PingCompleted);
string data = "OK";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 10000;
PingOptions options = new PingOptions(64, true);
myPing.SendAsync(_AppState.ServerName, timeout, buffer, options, waiter);
或
IPGlobalProperties properties = IPGlobalProperties.GetIPGlobalProperties();
TcpConnectionInformation[] connections = properties.GetActiveTcpConnections();
foreach (TcpConnectionInformation info in connections) {
if (info.RemoteEndPoint.Equals(targetEndPoint)) {
_AppState.OnlineStatus = Constant.ONLINE_STATUS_ONLINE;
isOnline = true;
break;
}
}
或
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
for (int i = 0; i < addressList.Length; i ++)
{
s += addressList[i].ToString();
}
------解决方案--------------------
string st = "";
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"] == true)
{
System.Array ar;
ar = (System.Array)(mo.Properties["IpAddress"].Value);
st = ar.GetValue(0).ToString();
break;
}
}
moc = null;
mc = null;
------解决方案--------------------
照顾楼主不认识VB.NET的语法,转换为C#
- C# code
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Windows.Forms; using System.Net; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { WebClient wb = new WebClient(); String strIP = ""; String strContent = ""; Regex regIP = new Regex("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}"); try { strContent = wb.DownloadString("http://www.ip138.com/ips8.asp"); if (strContent.IndexOf("IP地址查询") >= 1) { textBox1.Text = "爽,可以上网!"; strIP = regIP.Match(strContent).ToString(); if (strIP.Trim() != "") { textBox2.Text = "俺的IP是:" + strIP; } else { textBox2.Text = "虽然俺上网了,但是俺是黑户,没IP!"; } } } catch { textBox1.Text = "真不爽,不能上网,我去炸了电信!"; textBox2.Text = "不能上网,没IP!"; } } } }