永发信息网

C# 网络连接判断

答案:7  悬赏:10  手机版
解决时间 2021-04-05 03:53
C# 网络连接判断
最佳答案
要用的函数:InternetGetConnectedState
函数原形:BOOL InternetGetConnectedState(LPDWORD lpdwFlags,DWORD dwReserved);
参数lpdwFlags返回当前网络状态,参数dwReserved依然是保留参数,设置为0即可。
INTERNET_CONNECTION_MODEM 通过调治解调器连接网络
INTERNET_CONNECTION_LAN 通过局域网连接网络
这个函数的功能是很强的。它可以:
  1. 判断网络连接是通过网卡还是通过调治解调器
  2. 是否通过代理上网
  3. 判断连接是On Line还是Off Line
  4. 判断是否安装“拨号网络服务”
  5. 判断调治解调器是否正在使用
这个win32 API在系统system32文件夹中winInet.dll中
使用这个判断的话,需要在类中这样写:
private const int INTERNET_CONNECTION_MODEM = 1;
private const int INTERNET_CONNECTION_LAN = 2;
[DllImport(winInet.dll)]
private static extern bool InternetGetConnectedState(
ref int dwFlag,
int dwReserved);
//调用的方法(Winform为例,放一个按钮,单击即可):
private void button1_Click(object sender, System.EventArgs e){
System.Int32 dwFlag = new int();
if(!InternetGetConnectedState(ref dwFlag, 0))
MessageBox.Show(未连网!);else
if((dwFlag & INTERNET_CONNECTION_MODEM)!=0)
MessageBox.Show(采用调治解调器上网。);else
);
}
全部回答
datetime
判断网络是否连接要使用Windows API
发个例子给你.
这个是DotNet平台的P/Invoke调用.
仿造这个,在你程序里弄个新线程,10分钟执行一次,12次退出,很容易的.
private const int INTERNET_CONNECTION_MODEM = 1;
private const int INTERNET_CONNECTION_LAN = 2;
[DllImport("winInet.dll")]
private static extern bool InternetGetConnectedState(
ref int dwFlag,
int dwReserved
);
//调用的方法(Winform为例,放一个按钮,单击即可):
private void button1_Click(object sender, System.EventArgs e){
System.Int32 dwFlag = new int();
if(!InternetGetConnectedState(ref dwFlag, 0))
MessageBox.Show("未连网!");
else
if((dwFlag & INTERNET_CONNECTION_MODEM)!=0)
MessageBox.Show("采用调治解调器上网。");
else
if((dwFlag & INTERNET_CONNECTION_LAN)!=0)
MessageBox.Show("采用网卡上网。");
}
楼上的方案属于非完全性方案,判断发包是否成功.这样永远都会有Bug的.
试试这个看:
using System.Runtime.InteropServices;
private const long INTERNET_CONNECTION_MODEM = 1;//Local system uses a modem to connect to the Internet.
private const long INTERNET_CONNECTION_LAN = 2; //Local system uses a local area network to connect to the Internet.
private const long INTERNET_CONNECTION_PROXY = 4;//Local system uses a proxy server to connect to the Internet.
private const long INTERNET_CONNECTION_MODEM_BUSY = 8; //No longer used.
private const long INTERNET_CONNECTION_CONFIGURED = 64; //Local system has a valid connection to the Internet, but it might or might not be currently connected.
private const long INTERNET_CONNECTION_OFFLINE = 32; // Local system is in offline mode.
private const long INTERNET_RAS_INSTALLED = 16; //Local system has RAS installed.
[DllImport("wininet.dll")]
public static extern bool InternetGetConnectedState(out long lpdwFlags, long dwReserved);
protected void Page_Load(object sender, EventArgs e)
{
long lfag;
string strConnectionDev = "";
if (InternetGetConnectedState(out lfag, 0))
strConnectionDev = "网络连接正常!";
else
strConnectionDev = "网络连接不可用!";
if ((lfag & INTERNET_CONNECTION_OFFLINE) > 0)
strConnectionDev += "OFFLINE 本地系统处于离线模式。";
if ((lfag & INTERNET_CONNECTION_MODEM) > 0)
strConnectionDev += "Modem 本地系统使用调制解调器连接到互联网。";
if ((lfag & INTERNET_CONNECTION_LAN) > 0)
strConnectionDev += "LAN 本地系统使用的局域网连接到互联网。";
if ((lfag & INTERNET_CONNECTION_PROXY) > 0)
strConnectionDev += "a Proxy";
if ((lfag & INTERNET_CONNECTION_MODEM_BUSY) > 0)
strConnectionDev += "Modem but modem is busy";
this.Response.Write("");
}
我试过了,测试网络连接可以的
you can hi me.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
比利时企业工资怎么样,怎么能看出爸妈宠狗粮
神武269tc怎么上1400攻击
已知两圆的半径分别是3和4,圆心距的长为1,
在安徽省比一本线高80分,可以报哪些学校
我买的期房,预售合同上只写的我的名,现在还
全国有多少叫王廉政的
有没有关于姐弟之间的一些感人的话
表现矛盾纠结的诗句,描写纠结的句子
单选题Hedideverythingwithafullheart.___
46岁至55岁男女丧偶比例是多少
意蜂卵脾和虫脾怎样识别
事业单位矿工怎么处理,事业单位职工旷工如何
12.5英寸笔记本实用吗
我想有个妹妹,日语怎么说
卡西欧G shock系列腕表指针型的会比数显型的
推荐资讯
your mine they her的区别
我的电动车拿去修了以后怎么前减震变的很硬很
长12.56m的绳子正好可以绕这棵树的树干10圈。
我买的商品房盖了一半开发商没钱停工了,怎么
刚配了一副眼镜左眼400,右眼300,为什么
物体所占________的大小叫做物体的体积;容器
加强对中国传统文化保护的原因
周正昭和谁是情侣关系
请问医保卡里,每个人每月门诊费到账卡里是多
信用卡可以后续补资料提高额度吗?
什么叫德比?
罗斯蒙特的5601雷达能装在导波管里吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?