请问如何用C#检测当前网络的状态,包括网速是否极慢等.
解决方案 »
- 何为COM?
- 小妹请教前辈只让文本框输入数字!
- 如何造一个从WEBSERVICE到数据库的SSIS包呀,相关连接,代码示例均可,只要有帮助都有分
- 求只能输入数字与符号“-”的正则表达式,两者输入顺序任意
- 在打包时,部署目标机注册表时如何确定shell>Open>command的路径?
- C#中如何释放一个被其它对象所引用的实例?
- 面向对象编程的迷惑,欢迎大家来讨论
- GridView加一个动态列显示不同条件下不同图片的问题
- 如何将SQL SERVER数据库表中image数据类型的字段中存放的照片导入到EXCEL中
- 如何判断两台机子是否在同一局域网?真急啊!
- protected的概念问题
- 请教处于不同NAT背后的主机怎样用TcpChannel相互连接?问题解决就结帖,在线等……
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine("ping XXXXX");
将返回值进行分析
private const long INTERNET_CONNECTION_MODEM = 1;
private const long INTERNET_CONNECTION_LAN = 2;
private const long INTERNET_CONNECTION_PROXY = 4;
private const long INTERNET_CONNECTION_MODEM_BUSY = 8;
我还是用了默认的名字,程序中,多些共性,少些个性,我始终认为相当有必要。定义(引用)API函数
[DllImport("wininet.dll")]
public static extern bool InternetGetConnectedState (out long lpdwFlags , long dwReserved );private void button1_Click(object sender, System.EventArgs e)
{
long lfag;
string strConnectionDev="";
if(InternetGetConnectedState(out lfag,0))
strConnectionDev="在线呀!!用的是 ";
else
strConnectionDev="不在线呀!!";
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);
}
/// 是否已经连接
/// </summary>
public virtual bool Connected
{
get
{
try
{
//检查socket的状态是否可读
if(m_socket.Connected && m_socket.Poll(0, SelectMode.SelectRead))
{
byte[] aByte = new byte[1];
//因为TCP/IP协议无法精确的判断网络是否可用
//试读一个字符,Peek参数指定读取的字符不会从缓冲区中移除
//假如可读则表示连接可用
if(m_socket.Receive(aByte, 0, 1, SocketFlags.Peek) != 0)
return true;
Close("Disconnected.");
return false;
}
}
catch(SocketException e)
{
OnException(e);
}
return m_socket.Connected;
}
}