判断网络是否连接方法小结(C#)
来源:互联网 发布:分割图片的软件 编辑:程序博客网 时间:2024/06/04 04:41
C#判断网络是否连接常见有两种方法:
1) 调用 cmd 中的 ping 命令,分析输出信息来确定网络是否连接
// 使用 ping 命令来判断 ,txtIP 文本框输入一个有效的远程主机 ip
System.Diagnostics.Process proIP=
new
System.Diagnostics.Process();
proIP.StartInfo.FileName=
"cmd.exe"
;
proIP.StartInfo.UseShellExecute =
false
;
proIP.StartInfo.RedirectStandardInput =
true
;
proIP.StartInfo.RedirectStandardOutput =
true
;
proIP.StartInfo.RedirectStandardError =
true
;
proIP.StartInfo.CreateNoWindow =
true
;
// 不显示 cmd 窗口
proIP.Start();
proIP.StandardInput.WriteLine(
"ping "
+
this
.txtIP.Text.Trim());
proIP.StandardInput.WriteLine(
"exit"
);
string
strResult=proIP.StandardOutput.ReadToEnd();
if
(strResult.IndexOf(
"(0% loss)"
)!=-1)
this
.txtShow.Text=
"Ping 通了! "
;
else
if
(strResult.IndexOf(
"(100% loss)"
)!=-1)
this
.txtShow.Text=
" 无法 Ping 通! "
;
else
this
.txtShow.Text=
" 数据有丢失! "
proIP.Close();
2)使用InternetGetConnectedState () 函数
这个win32 API 在系统 system32 文件夹中 winInet.dll 中 ,可以用来判断是否联网和上网的方式是 Modem 还是 LAN 等
//使用DllImport需导入命名空间
using
System.Runtime.InteropServices;
//InternetGetConnectedState返回的状态标识位的含义:
private
const
int
INTERNET_CONNECTION_MODEM = 1;
private
const
int
INTERNET_CONNECTION_LAN = 2;
private
const
int
INTERNET_CONNECTION_PROXY = 4;
private
const
int
INTERNET_CONNECTION_MODEM_BUSY = 8;
[DllImport(
"winInet.dll "
)]
//声明外部的函数:
private
static
extern
bool
InternetGetConnectedState(
ref
int
dwFlag,
int
dwReserved
);
static
void
Main(
string
[] args)
{
int
dwFlag = 0;
string
netstatus =
""
;
if
(!InternetGetConnectedState(
ref
dwFlag, 0))
Console.WriteLine(
"未联网!"
);
else
{
if
((dwFlag & INTERNET_CONNECTION_MODEM) != 0)
netstatus +=
" 采用调治解调器上网 \n"
;
if
((dwFlag & INTERNET_CONNECTION_LAN) != 0)
netstatus +=
" 采用网卡上网 \n"
;
if
((dwFlag & INTERNET_CONNECTION_PROXY) != 0)
netstatus +=
" 采用代理上网 \n"
;
if
((dwFlag & INTERNET_CONNECTION_MODEM_BUSY) != 0)
netstatus +=
" MODEM被其他非INTERNET连接占用 \n"
;
}
Console.WriteLine(netstatus);
Console.ReadLine();
}
win32 API函数的做法:
要用的函数: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
if
((dwFlag & INTERNET_CONNECTION_LAN)!=0)
MessageBox.Show(
"采用网卡上网。"
);
}
0 0
- 判断网络是否连接方法小结(C#)
- Linux C 判断网络是否连接
- 判断网络是否可连接的方法
- 判断Android网络是否连接方法
- Linux C语言ping方法判断是否已经连接网络方法
- 判断是否连接网络
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接,
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- HDOJ-5087-Revenge of LIS II
- 第十周项目一(1)填充程序并使其运行十次
- 利用Python可视化MINIST数据集
- 程序员应该知道的97件事——读书笔记1(Bug与部署)
- XP蓝屏问题解决
- 判断网络是否连接方法小结(C#)
- ASI详解
- iOS学习之iOS沙盒(sandbox)机制和文件操作(一)
- 更改MMS协议的默认播放器
- 单链表的逆序
- jquery mobile页面跳转后js不执行的问题
- DEDE修改文章TAG,给TAG加链接,去掉TAG字数限制
- 第十三章之Activity与Intent&Intent传递序列化对象
- Sizeof与Strlen的区别与联系