导航:首页 > 异常信息 > 判断网络是否连接函数

判断网络是否连接函数

发布时间:2022-05-21 22:57:37

⑴ 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
);}

⑵ vb怎样查看网络连接状态

Winsock.state 是显示当前Winsock 和另一主机连接的状态,它不是显示主机网络信息的.

用InternetGetConnectedState() 函数可以实现.为了方便你调用下面给模快代码你吧..

Private Declare Function InternetGetConnectedState Lib "Wininet.dll" (ByVal Flag As Long, ByVal Reserved As Long) As Long
Public Type Rtn_InetStat
IsConnecting As Boolean
IsModenConnecting As Boolean
IsModenBusy As Boolean
IsLANConnecting As Boolean
IsProxyConnecting As Boolean
End Type
Public Function RtnInetStat() As Rtn_InetStat
RtnInetStat.IsConnecting = RtnNunBooleanA(InternetGetConnectedState(0, 0))
RtnInetStat.IsModenConnecting = RtnNunBooleanB(InternetGetConnectedState(1, 0))
RtnInetStat.IsLANConnecting = RtnNunBooleanB(InternetGetConnectedState(2, 0))
RtnInetStat.IsProxyConnecting = RtnNunBooleanA(InternetGetConnectedState(4, 0))
RtnInetStat.IsModenBusy = RtnNunBooleanA(InternetGetConnectedState(8, 0))
End Function
Private Function RtnNunBooleanA(ByVal Num As Long) As Boolean
If Num = 0 Then
RtnNunBooleanA = False
Else
RtnNunBooleanA = True
End If
End Function
Private Function RtnNunBooleanB(ByVal Num As Long) As Boolean
If Num = 0 Then
RtnNunBooleanB = True
Else
RtnNunBooleanB = False
End If
End Function

获取当前网络是否已连接上:
Msgbox RtnInetStat.IsConnecting

⑶ C# 网络连接判断

下面这个程序就是, 你可以直接去建立一个控制台应用程序去调试一下

不过需要说明一下,程序的思路就是,通过PING的方式 去ping internet上计算机的IP地址(这里是随便用的一个网通服务器IP123.145.68.1),如果能ping成功代表,本地电脑连接上外网。。

123.145.68.1这个IP地址可以随意换 只要是在internet上的计算机的IP都可以,不过如果你程序的这个IP不是通过配置,而是写死在程序中的情况,推荐你使用一个一直都在线的计算机IP ,比如QQ,163等服务器IP(你应该明白吧)

那个IP 也可以换成 如http://www.163.com的 字符串,不过这时候 需要对

PingReply pr = p.Send("http://www.163.com");这句代码 进行try catch一下(因为,断开网络的时候会抛出异常);

暂停10分钟的那段代码要写在catch里,这里就不详细列出了。 你肯定知道的。

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.NetworkInformation;
using System.Threading;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Ping p = new Ping();//创建Ping对象p
PingReply pr = p.Send("123.145.68.1");//向指定IP或者主机名的计算机发送ICMP协议的ping数据包

if (pr.Status == IPStatus.Success)//如果ping成功
{
Console.WriteLine("网络连接成功, 执行下面任务...");
}
else
{
int times = 0;//重新连接次数;
do
{
if (times >= 12)
{
Console.WriteLine("重新尝试连接超过12次,连接失败程序结束");
return;
}

Thread.Sleep(600000);//等待十分钟(方便测试的话,你可以改为1000)
pr = p.Send("123.145.68.1");

Console.WriteLine(pr.Status);

times++;

}
while (pr.Status != IPStatus.Success);

Console.WriteLine("连接成功");
times = 0;//连接成功,重新连接次数清为0;
}
}
}
}

不知道符合你要求不, 希望对你有帮助 ,,睡了 累死了,,语文差死了 所以组织了很久的语言,哈哈,

⑷ 判断网络连接是否正常的方法

要用的函数: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("采用调治解调器上网。");

⑸ 在C#中有哪个函数是判断网络是否有链接

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Pinyin
{
public partial class Form4 : Form
{
// 定义常量
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.
public Form4()
{
InitializeComponent();
}
//定义(引用)API函数
[DllImport("wininet.dll")]
public static extern bool InternetGetConnectedState(out long lpdwFlags, long dwReserved);

private void button1_Click(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";
MessageBox.Show(strConnectionDev);
}
}
}

⑹ MFC控制台编程,检查电脑是否连网,该用什么函数

找了几种方法, 都比较复杂. 没有专门的 用于测试是否正常连接 Internet 的函数,
不过可以间接找几种方法.
1. cmd 命令 ping . 最直观的命令, 但是如果在程序内执行, 很难获取到他的回显信息. 网上是通过创建管道来获取回显, 具体可以查询相关代码,有人写好了. 还有我自己想的一种方法,
ping *** > res.txt 重定向回显信息到文件, 读取文件内容作判断. 之后删除这个文件,

2. URLDonwLoadToFile函数. 函数名很直观, 缺点也是 需要写文件, 这个返回值 就是是否联网了, 当然跟本地网络,和服务器响应都有关联, 如果这一次请求没成功, 或者本地网络延迟较大,那么只做一次判断的话显然不是很准确.

你是在控制台, 如果在 MFC 类库下的话, 有一个 CInternetSession 类, 很好用, 可以打开某一网页,就知道 主机是否可以正常联网了.

也有很多第3方的 类似 curl 等等..

⑺ 求大神指点vb.net 怎么判断 网络是否连接 和取本机局域网IP和互联网IP

你这段代码可以获得该主机名下的所有ip,每个ip地址都是有类型簇的,可以区别本地地址和网络地址、ip6地址。
你获取索引为0的ip,不一定是正确的网络地址,它有时顺序在中间,在后面。
应该获取所有ip,再通过ip地址簇类型区分
判断连接本身有一个函数,不过有时没联网也是真。
可以用ping,ping网络、ping访问速度快、不经常维护断线的网络主机。

⑻ c语言如何检测网络是否连接

1、如果对方断开连接的话,那么readNum = recv ( socketId, rcvBuf, rcvBufSize, 0 );
readNum返回值应该是0,可以根据返回值判断。
2、recv函数返回值说明
recv函数
int recv( SOCKET s, char FAR *buf, int len, int flags);
不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符; 第二个参数指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据; 第三个参数指明buf的长度; 第四个参数一般置0。
这里只描述同步Socket的recv函数的执行流程。当应用程序调用recv函数时,
(1)recv先等待s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么recv函数返回SOCKET_ERROR,
(2)如果s的发送缓冲中没有数据或者数据被协议成功发送完毕后,recv先检查套接字s的接收缓冲区,如果s接收缓冲区中没有数据或者协议正在接收数 据,那么recv就一直等待,直到协议把数据接收完毕。当协议把数据接收完毕,recv函数就把s的接收缓冲中的数据到buf中(注意协议接收到的数据可能大于buf的长度,所以 在这种情况下要调用几次recv函数才能把s的接收缓冲中的数据完。recv函数仅仅是数据,真正的接收数据是协议来完成的), recv函数返回其实际的字节数。如果recv在时出错,那么它返回SOCKET_ERROR;如果recv函数在等待协议接收数据时网络中断了,那么它返回0。 默认 socket 是阻塞的 解阻塞与非阻塞recv返回值没有区分,都是 <0 出错 =0 连接关闭 >0 接收到数据大小,
特别:返回值<0时并且(errno == EINTR || errno == EWOULDBLOCK || errno == EAGAIN)的情况下认为连接是正常的,继续接收。只是阻塞模式下recv会阻塞着接收数据,非阻塞模式下如果没有数据会返回,不会阻塞着读,因此需要循环读取)。
返回说明: 成功执行时,返回接收到的字节数。另一端已关闭则返回0。失败返回-1,errno被设为以下的某个值 EAGAIN:套接字已标记为非阻塞,而接收操作被阻塞或者接收超时 EBADF:sock不是有效的描述词 ECONNREFUSE:远程主机阻绝网络连接 EFAULT:内存空间访问出错 EINTR:操作被信号中断 EINVAL:参数无效 ENOMEM:内存不足 ENOTCONN:与面向连接关联的套接字尚未被连接上 ENOTSOCK:sock索引的不是套接字 当返回值是0时,为正常关闭连接;
思考:当对侧没有send,即本侧的套接字s的接收缓冲区无数据,返回值是什么(EAGAIN,原因为超时,待测)

⑼ C#检查网络是否连接的方法

C#检查网络是否连接 在网上查到有几种方式检查网络是否连接,测试了一下,第一种方式受到ping时延的影响,在某些不支持ping的地址或者网段甚至不可用,因此建议采用方法2 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 通了!" 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(); }

阅读全文

与判断网络是否连接函数相关的资料

热点内容
网络共享中心没有网卡 浏览:549
电脑无法检测到网络代理 浏览:1408
笔记本电脑一天会用多少流量 浏览:708
苹果电脑整机转移新机 浏览:1403
突然无法连接工作网络 浏览:1163
联通网络怎么设置才好 浏览:1260
小区网络电脑怎么连接路由器 浏览:1145
p1108打印机网络共享 浏览:1238
怎么调节台式电脑护眼 浏览:797
深圳天虹苹果电脑 浏览:1032
网络总是异常断开 浏览:641
中级配置台式电脑 浏览:1097
中国网络安全的战士 浏览:658
同志网站在哪里 浏览:1454
版观看完整完结免费手机在线 浏览:1484
怎样切换默认数据网络设置 浏览:1145
肯德基无线网无法访问网络 浏览:1337
光纤猫怎么连接不上网络 浏览:1576
神武3手游网络连接 浏览:994
局网打印机网络共享 浏览:1023