C#如何获取本地IP地址(我有无线网络IP地址)

lucas623 2009-07-31 02:38:40
网上查了 获取IP地址 都是这样做的 但我有本地连接和无线网络 两个IP地址
string strHostName = Dns.GetHostName();
string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(1).ToString();


我如何区分获取的是本地的还是无线网络的?我需要的是本地IP地址
...全文
1701 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
灰鸽 2012-05-08
  • 打赏
  • 举报
回复
very good.very thanks.study this.
任性的学霸 2011-06-27
  • 打赏
  • 举报
回复
请问下 那么要是无线的IP地址呢 在Asp.Net里面要怎么获得啊 帮忙下 谢谢啦
permy 2010-06-29
  • 打赏
  • 举报
回复
在asp.net中用八楼的方法可以!
ICanUseThisID 2009-07-31
  • 打赏
  • 举报
回复
另:由于微软的APIPA机制,可能会出现一个169.254.*.*这样的地址。。。
[Quote=引用自“网络”,未经过实际测试:]
如何禁止APIPA

APIPA是Automatic Private IP Addressing的缩写。它的作用就是在一个没有DHCP的小型
网络中,客户机通过给自己配置169.254.x.x类型的IP地址使自己获得IP配置的机制。如果
不希望让这一机制生效,可以通过编辑注册表:
打开注册表编辑器;
找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Inte
rfaces,找到相应的接口号;
加入DWORD类型的IPAutoconfigurationEnabled项设置其值为0;
退出注册表编辑器即可
如果用户有多个网络适配器,并且希望它们都不能进行APIPA,可以设置HKEY_LOCAL_MACH
INE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\IPAutoconfigurationEnab
led为0即可。
[/Quote]
ICanUseThisID 2009-07-31
  • 打赏
  • 举报
回复

//试试这个
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in interfaces)
{
if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
foreach (UnicastIPAddressInformation ip in
ni.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
MessageBox.Show(ip.Address.ToString());
}
}
}
}
yagebu1983 2009-07-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fly871117 的回复:]
ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString()

ip = Request.ServerVariables["REMOTE_ADDR"].ToString()
[/Quote]

试试这个。。。
fly871117 2009-07-31
  • 打赏
  • 举报
回复
ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString()

ip = Request.ServerVariables["REMOTE_ADDR"].ToString()
zdl110110 2009-07-31
  • 打赏
  • 举报
回复
IPHostEntry hostInfo = Dns.GetHostByName(hostString);
hostInfo.AddressList[0];
ICanUseThisID 2009-07-31
  • 打赏
  • 举报
回复

using System.Net.NetworkInformation;



NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface ni in interfaces)
{
if (ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
MessageBox.Show(ni.Name);
}
}
fj4408 2009-07-31
  • 打赏
  • 举报
回复
IP的AddressFamily属性,好像可以选择获取地址的类型。
lucas623 2009-07-31
  • 打赏
  • 举报
回复
没人知道吗?
lucas623 2009-07-31
  • 打赏
  • 举报
回复
我知道 但我意思是 我就是需要直接要获取到本地连接的IP地址 而不是无线的 我如何准确的获取到
北京的雾霾天 2009-07-31
  • 打赏
  • 举报
回复
System.Net.Dns.GetHostAddresses(strHostName)
返回的不是一个数组吗?你只取了第一个IP,其它的没有取到。你循环一下试试看:



string strHostName = Dns.GetHostName();
foreach (IPAddress ip in System.Net.Dns.GetHostAddresses(strHostName))
{
Console.WriteLine(ip.ToString());
}

110,576

社区成员

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

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

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