这么晚了。不知道大家还在不在线。。WinForms中如何判断本机是否联网??

解决方案 »

  1.   

    try
    {
    System.Net.IPHostEntry ip = System.Net.Dns.GetHostByName("www.csdn.net");
    }
    catch(Exception ex)
    {
    //联不上网
    }
      

  2.   

    准确的说,是判断能否和某台主机用某种协议相连接using System.Net.Sockets;try
    {
        Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        soc.Connect("xxx.163.com", 80);
        Console.WriteLine("Success");
    }
    catch (SocketException se)
    {
        Console.WriteLine(se.Message);
    }
      

  3.   

    Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    try
    {
        soc.Connect("xxx.163.com", 80);
        Console.WriteLine("SUCCEED");
    }
    catch (SocketException se)
    {
        Console.WriteLine(se.Message);
    }
    finally
    {
        (soc as IDisposable).Dispose();
    }
      

  4.   

    出错
    soc.Connect("xxx.163.com", 80);
    d:\documents and settings\administrator\my documents\visual studio projects\tcp\form1.cs(147,5): error CS1501: 重载“Connect”方法未获取“2”参数
      

  5.   

    /// <summary>
    /// WinInet 的摘要说明。
    /// </summary>
    public class WinInet
    {
    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
    ); /// <summary>
    /// 是否连接在Internet
    /// </summary>
    /// <param name="IsModem">如果连接在Internet,判断是否通过Modem上网</param>
    /// <returns></returns>
    public static bool IsOnline(out bool IsModem)
    {
    IsModem=false;
    int dwFlag = new int();
    if(!InternetGetConnectedState(ref dwFlag, 0))
    return false;
    else if((dwFlag & INTERNET_CONNECTION_MODEM)!=0)
    IsModem=true;
    else if((dwFlag & INTERNET_CONNECTION_LAN)!=0)
    IsModem=false;
    return true;
    }
    }