用的是visual studio2010的 在win7系统代码是:
            IPAddress _ip = Dns.GetHostAddresses(Dns.GetHostName())[0];
           _tcpl = new TcpListener(_ip, _port);
            _tcpl.Start();
            Console.WriteLine("服务器已启动,正在监听...\n");
            Console.WriteLine(string.Format("服务器IP:{0}\t端口号:{1}\n", _ip, _port));
结果ip显示不是正常格式,而且自己联网和不联网都不一样,不联网时,显示的 服务器ip是  ::1我是想做一个服务端不懂怎么回事程序在05版本上是可行的

解决方案 »

  1.   

    Win7下有可能获取到的ipv6的地址
      

  2.   

    额,改好了   ,把IPAddress _ip = Dns.GetHostAddresses(Dns.GetHostName())[0];
    最后的改成1  就好了,我的默认的是ipv6的,到了1才是ipv4的
      

  3.   


    改成1的话在没有ipv6协议的机器上会直接报错的。
    获取IP的方法网上有很多吧,我的思路是取一个TCP连接,取它的LocalEndPoint,大概是这样System.Net.NetworkInformation.TcpConnectionInformation connection= Array.FindAll(
        System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().GetActiveTcpConnections(),
        o => !System.Net.IPAddress.IsLoopback(o.LocalEndPoint.Address)
    ).FirstOrDefault();
    if (connection != null)
    {
         string ip = connection.LocalEndPoint.Address.ToString();
    }