Printable Version
Check Your Internet Connection With C#
By Simohamed Attahri
How to check if your computer is connected to the internet with C#. It's much more easier that other tutorials I've seen in other sites. In deed, we're going to use a simple API function InternetGetConnectedState, to return a boolean variable.This function takes two arguments :The first one is an integer used with out keyword, that means that after calling the function, the variable will contain an interger that describes the connection state ( use of a modem, use of a proxy, offline mode...). Note that you must refer to www.msdn.com for more information about that.
The second one is a reserved variable that must be set to 0.In this tutorial, we'll create a class with a static function that returns true if connected and false if not, using our API function in private state.Check this out :using System ; 
using System.Runtime ;
using System.Runtime.InteropServices ; public class InternetCS
{//Creating the extern function...
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState( int out Description, int ReservedValue ) ;//Creating a function that uses the API function...
public static bool IsConnectedToInternet( )
{int Desc ;
return InternetGetConnectedState( out Desc, 0 ) ;}}

解决方案 »

  1.   

    http://www.csdn.net/Develop/read_article.asp?id=25900
      

  2.   

    call win's ping command
      

  3.   

    向网关发IMCP包。在定义socket类时,可定义协议类型(tcp udp imcp)
      

  4.   

    C#有太多的时候要调用API了, 不知道什么时候才能把所有API封装成类, 就像GDI+,居然画线没有异或的能力,惰闷中......................
      

  5.   

    使用C#调用外部Ping命令获取网络连接情况
    http://dev.csdn.net/develop/article/25/25900.shtm
      

  6.   

    以前做系统监控写的:
    using System;
    using System.Diagnostics;
    namespace ZZ{     class ZZConsole     {         [STAThread]         static void Main(string[] args)         {                  string ip = "192.192.132.229";              string strRst = CmdPing(ip);              Console.WriteLine(strRst);              Console.ReadLine();         }         private static string CmdPing(string strIp)         {              Process p = new Process();              p.StartInfo.FileName = "cmd.exe";              p.StartInfo.UseShellExecute = false;              p.StartInfo.RedirectStandardInput = true;              p.StartInfo.RedirectStandardOutput = true;              p.StartInfo.RedirectStandardError = true;              p.StartInfo.CreateNoWindow = true;              string pingrst;              p.Start();              p.StandardInput.WriteLine("ping -n 1 "+strIp);              p.StandardInput.WriteLine("exit");              string strRst = p.StandardOutput.ReadToEnd();              if(strRst.IndexOf("(0% loss)")!=-1)                   pingrst = "连接";              else if( strRst.IndexOf("Destination host unreachable.")!=-1)                   pingrst = "无法到达目的主机";              else if(strRst.IndexOf("Request timed out.")!=-1)                   pingrst = "超时";              else if(strRst.IndexOf("Unknown host")!=-1)                   pingrst = "无法解析主机";              else                   pingrst = strRst;              p.Close();              return pingrst;         }     }}