用的是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版本上是可行的
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 就好了,我的默认的是ipv6的,到了1才是ipv4的
改成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();
}