C#.NET 如何获得本机IP地址?

我用MSDN上的代码:
string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); //取得本机IP
string ip = ipEntry.AddressList[0].ToString(); //假设本地主机为单网卡
结果得到ip为:2002:b00:11e:b00:11e
我把第三句的AddressList[0]改为AddressList[1]后,IP就正常了。
但我程序调试个2、3次后,就会说我的AddressList[1]数组越界了,再改为AddressList[0]后,IP又正常了。以后就一直用AddressList[0],直到下次打开VS2005。
(每次都是这样)
太奇怪了,怎么回事呢?

有几种方法获取本机局域网地址和网络地址。
1、 获取本机局域网地址:
使用IPHostEntry
static string
GetLocalIp()
{
string
hostname =
Dns.GetHostName();
IPHostEntry localhost =
Dns.GetHostByName(hostname);
IPAddress localaddr =
localhost.AddressList[0];
return localaddr.ToString();
}

2、获取本机网络ip地址:
通过向网站http://www.ip138.com/ip2city.asp发送webrequest,分析返回的数据流

try
{
string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址
Uri uri = new
Uri(strUrl);
WebRequest webreq =
WebRequest.Create(uri);
Stream s = webreq
.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(s,
Encoding.Default);
string all = sr.ReadToEnd(); //读取网站返回的数据 格式:您的IP地址是:[x.x.x.x]
int i = all.IndexOf("[") +
1;
string tempip = all.Substring(i,
15);
string ip = tempip.Replace("]", "").Replace(" ",
"").Replace("<",""); //去除杂项找出ip
return ip;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-06
你的机子安装了IPv6协议,所以2002:b00:11e:b00:11e 是你的IPV6的地址。

你可以通过以下代码:你可以通过foreach来达到AddressList的元素个数无关性,得到所有的IP地址~然后通过一些筛选来得到选出你需要的那个

string strHostName = Dns.GetHostName(); //得到本机的主机名
IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); //取得本机IP
foreach (System.Net.IPAddress ip in ipEntry.AddressList)
{
Console.WriteLine(ip);
}

参考资料:http://msdn.microsoft.com/en-us/library/ttw7t8t6(VS.80).aspx

本回答被提问者采纳
第2个回答  2008-12-04
AddressList[0]是系统试着的ip地址,AddressList[1]是你通过拨号上网获取的地址 。下次编程的时候用AddressList[1]记得拨号 。
第3个回答  2020-12-23

第4个回答  2008-12-04
关注

C#.NET 如何获得本机IP地址?
获取本机网络ip地址的步骤如下:使用Webrequest类创建请求,目标为"http:\/\/www.ip138.com\/ip2city.asp"。通过Webrequest.GetResponse()获取响应流,然后使用StreamReader读取返回的数据。在读取的数据中查找"您的IP地址是:"字符串,并从其后开始截取包含15个字符的字符串作为ip地址。对截取的字符串进行...

C#.NET 如何获得本机IP地址?
1、 获取本机局域网地址:使用IPHostEntry static string GetLocalIp(){ string hostname = Dns.GetHostName();IPHostEntry localhost = Dns.GetHostByName(hostname);IPAddress localaddr = localhost.AddressList[0];return localaddr.ToString();} 2、获取本机网络ip地址:通过向网站http:\/\/www.ip138...

C#中如何获取本机的IP地址
\/\/ 获得本机局域网IP地址 addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [0].Address ) ;return addr.ToString ( ) ;} 双击btn按钮,写上 this.txt.text=getIPAddress();

C#中如何得到机器的IP地址
DNSUtility代码namespaceNKUtilitieselse\/\/然后通过主机名称得到IP地址列表IPHostEntryipEntry=DNS.GetHostByName;IPAddressaddr=ipEntry.AddressList;forreturn0;}}}代码的解释如果想得到本地机器的主机名,你可以不加参数调用GetHostName方法。提示

c#如何获取本机电脑名称和IP
IP:System.Net.IPAddress addr = new System.Net.IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address);计算机名 string hostname=Dns.GetHostName();

.NET 问题请教,获取IP地址问题!C#
protected void Page_Load(object sender, EventArgs e){ Label1.Text=GetIP();\/\/Label1为label的id号 }

C#.net Sockets,服务端怎么知道客户端的IP和端口?
socket有一个LocalEndPoint获取本地的ip和端口号 RemoteEndPoint来获取远程客户端的ip和端口号

C#中获取IP地址问题
右击你的网上领居——属性——本地连接右击——属性——常规选项卡——在列表框中找到internet协议(tcp\/ip)点击属性,里面看到的就是你当前的ip地址,如果显示的是自动获取的话你的ip就是内网的,动态的会自动发生改变,也就是说每次联网获得的ip地址都是不一样的 ...

.net 4.5 c# 获取内网ip
region[内网地址]public static string getClientLocalIPAddress(){ string localIP = null;try { IPHostEntry ipHost = System.Net.Dns.GetHostEntry(Dns.GetHostName());\/\/ Dns.Resolve(Dns.GetHostName()); ;IPAddress ipaddress = ipHost.AddressList[0];localIP = ipaddress.ToString();retur...

用C# 如何获取局域网内电脑的IP地址
先获取自己的IP地址和 子网掩码 ,然后根据IP和子网掩码计算局域网中所有IP地址,然后使用 DWORD SendARP(__in IPAddr DestIP,__in IPAddr SrcIP,__out PULONG pMacAddr,__in_out PULONG PhyAddrLen );使用这个 API函数 逐个扫描检测 MAC地址 如果成功则表示在线 如果失败则不再线 函数详细信息...

相似回答