【求助】c# 获取本机ip 时出错

whisper 2012-06-05 11:01:22
用的是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版本上是可行的
...全文
193 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ParanoidKing 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
额,改好了 ,把IPAddress _ip = Dns.GetHostAddresses(Dns.GetHostName())[0];


最后的改成1 就好了,我的默认的是ipv6的,到了1才是ipv4的
[/Quote]

改成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();
}
whisper 2012-06-05
  • 打赏
  • 举报
回复
额,改好了 ,把IPAddress _ip = Dns.GetHostAddresses(Dns.GetHostName())[0];


最后的改成1 就好了,我的默认的是ipv6的,到了1才是ipv4的
whisper 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
Win7下有可能获取到的ipv6的地址
[/Quote]

如何修改呢
whisper 2012-06-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
你获取的是ipv6的
[/Quote]
那应该如何获取ipv4的呢?
bdmh 2012-06-05
  • 打赏
  • 举报
回复
你获取的是ipv6的
ParanoidKing 2012-06-05
  • 打赏
  • 举报
回复
Win7下有可能获取到的ipv6的地址

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧