IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 80);
EndPoint EndPointFrom = (ipEndPointFrom);
toolStripStatusLabel1.Text = EndPointFrom.ToString();
最后显示的结果是这样
怎样才能显示如180.102.111.169这样的格式呢?
21 个解决方案
#1
你这是IPV6的
private void GetIP()
{
string hostName = Dns.GetHostName();//本机名
//System.Net.IPAddress[] addressList = Dns.GetHostByName(hostName).AddressList;//会警告GetHostByName()已过期, //我运行时且只返回了一个IPv4的地址
System.Net.IPAddress[] addressList = Dns.GetHostAddresses(hostName);//会返回所有地址,包括IPv4和IPv6
foreach (IPAddress ip in addressList)
{
listBox1.Items.Add(ip.ToString());
}
}
#2
![C#怎样获取本机的ip地址啊 C#怎样获取本机的ip地址啊](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OXBiV2N0WW1KekxtTnpaRzR1Ym1WMEwzVndiRzloWkM4eU1ERTJNRFF2TURRdk1UUTFPVGM0TURBMk9GODVOakE0T1RBdWNHNW4%3D.jpg?w=700&webp=1)
还是不管用啊
#3
1楼的代码是可以列出全部IP的,包含IPV6和传统V4的,楼主的那个也是IP啊,是IPV6
#4
为什么都是这种格式的ip呢 我想要180.102.111.169这种的
#5
你先建立一个例子代码,按照1楼的代码,拷贝过去,可以看到获得的IP地址有IPV6和IPV4的,你得选一个IPV4的
#6
private IEnumerable<System.Net.IPAddress> GetIPs()
{
System.Net.IPAddress[] addressList = Dns.GetHostAddresses(Dns.GetHostName());
return addressList.Where(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork);
}
//调用
foreach (var v in GetIPs())
{
Console.WriteLine(v);
}
#7
win7以上os有ipv4、ipv6两个协议,获取ip地址的时候默认是ipv6的地址,代码要加ipv4的限制,才能输出192.168.20.1这种
#8
ip.AddressFamily == AddressFamily.InterNetwork
#9
楼主的语句加个断点就能看出问题了。
在我电脑(Win 7 32位+VS 2012)上测试的,如下图,只要把[0]改成[1]就OK了。
在我电脑(Win 7 32位+VS 2012)上测试的,如下图,只要把[0]改成[1]就OK了。
![C#怎样获取本机的ip地址啊 C#怎样获取本机的ip地址啊](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OXBiV2N0WW1KekxtTnpaRzR1Ym1WMEwzVndiRzloWkM4eU1ERTJNRFF2TURVdk1UUTFPVGd6TXpVNE9GODVOekUxT0RZdWNHNW4%3D.jpg?w=700&webp=1)
#10
又找了台Windows 2003的电脑上测了一下,结果是,2003下只能检测到一个IPV4,而在Windows7下能检测出IPV4和IPV6两个。
在网上搜了一下,如果安装了虚拟机或是多个网卡,应该会检测出更多个。
看来只能一个个的去测试,看看是IPV4的,还是IPV6的了。
在网上搜了一下,如果安装了虚拟机或是多个网卡,应该会检测出更多个。
看来只能一个个的去测试,看看是IPV4的,还是IPV6的了。
#11
public string GetLocalIP()
{
//获取说有网卡信息
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
//判断是否为以太网卡
//Wireless80211 无线网卡 Ppp 宽带连接
//Ethernet 以太网卡
//这里篇幅有限贴几个常用的,其他的返回值大家就自己百度吧!
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
//获取以太网卡网络接口信息
IPInterfaceProperties ip = adapter.GetIPProperties();
//获取单播地址集
UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
foreach (UnicastIPAddressInformation ipadd in ipCollection)
{
//InterNetwork IPV4地址 InterNetworkV6 IPV6地址
//Max MAX 位址
if (ipadd.Address.AddressFamily == AddressFamily.InterNetwork)
//判断是否为ipv4
{
strLocalIP = ipadd.Address.ToString();//获取ip
return strLocalIP;//获取ip
}
}
}
}
return null;
}
#12
需要提醒楼主的是, 很多人的电脑都不是一张网卡, 二个同一张网卡也可能有多个IP
所有11L的方法有点瑕疵,就是IP没有完全列举
最后的结果要是给人看还好,要是一个中间变量,那你可要好好检查一下IP地址是不是你要的那一个.
所有11L的方法有点瑕疵,就是IP没有完全列举
最后的结果要是给人看还好,要是一个中间变量,那你可要好好检查一下IP地址是不是你要的那一个.
public string GetLocalIP()
{
List<string> strIPs = new List<string>();
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
var mac = adapter.GetPhysicalAddress(); Console.WriteLine(mac);
IPInterfaceProperties ip = adapter.GetIPProperties();
UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
foreach (UnicastIPAddressInformation ipadd in ipCollection)
{
//InterNetwork IPV4地址
//InterNetworkV6 IPV6地址
if (ipadd.Address.AddressFamily == AddressFamily.InterNetwork)
{ //判断是否为ipv4
Console.WriteLine(ipadd.Address.ToString());
strIPs.Add(ipadd.Address.ToString());
}
}
}
}
return string.Join(";", strIPs);
}
#13
using System;
using System.Collections.Generic;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Windows.Forms;
用到的引用,已发表的不能编辑真是丹腾
#14
Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault<IPAddress>(a => a.AddressFamily.ToString().Equals("InterNetwork")).ToString()
就这一行代码 简单残暴
#15
Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault<IPAddress>(a => a.AddressFamily.ToString().Equals("InterNetwork")).ToString()
就这一行代码 简单残暴
太残暴,太有效!
#16
IPAddress localAddress = AddressHelper.GetLocalhostIPv4Addresses().First();
#17
using System.Net;
using System.Net.Sockets;
using MyNetworkLibrary;
using System.Net.Sockets;
using MyNetworkLibrary;
#18
IPHostEntry fromHE = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 80);
EndPoint EndPointFrom = (ipEndPointFrom);
toolStripStatusLabel1.Text = EndPointFrom.ToString();
最后显示的结果是这样
怎样才能显示如180.102.111.169这样的格式呢?
IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 80);
0是显示IPv6,把0改成1就是显示IPv4地址
#19
IPAddress localAddress = AddressHelper.GetLocalhostIPv4Addresses().First();
#20
以上所有代码在Win10下测试,声称能够获取IPV4的代码获取的都是本机IP,类似192.168.0.101
#21
Dns 点不出 是需要引用什么吗
#1
你这是IPV6的
private void GetIP()
{
string hostName = Dns.GetHostName();//本机名
//System.Net.IPAddress[] addressList = Dns.GetHostByName(hostName).AddressList;//会警告GetHostByName()已过期, //我运行时且只返回了一个IPv4的地址
System.Net.IPAddress[] addressList = Dns.GetHostAddresses(hostName);//会返回所有地址,包括IPv4和IPv6
foreach (IPAddress ip in addressList)
{
listBox1.Items.Add(ip.ToString());
}
}
#2
你这是IPV6的
private void GetIP()
{
string hostName = Dns.GetHostName();//本机名
//System.Net.IPAddress[] addressList = Dns.GetHostByName(hostName).AddressList;//会警告GetHostByName()已过期, //我运行时且只返回了一个IPv4的地址
System.Net.IPAddress[] addressList = Dns.GetHostAddresses(hostName);//会返回所有地址,包括IPv4和IPv6
foreach (IPAddress ip in addressList)
{
listBox1.Items.Add(ip.ToString());
}
}
![C#怎样获取本机的ip地址啊 C#怎样获取本机的ip地址啊](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OXBiV2N0WW1KekxtTnpaRzR1Ym1WMEwzVndiRzloWkM4eU1ERTJNRFF2TURRdk1UUTFPVGM0TURBMk9GODVOakE0T1RBdWNHNW4%3D.jpg?w=700&webp=1)
还是不管用啊
#3
1楼的代码是可以列出全部IP的,包含IPV6和传统V4的,楼主的那个也是IP啊,是IPV6
#4
1楼的代码是可以列出全部IP的,包含IPV6和传统V4的,楼主的那个也是IP啊,是IPV6
为什么都是这种格式的ip呢 我想要180.102.111.169这种的
#5
1楼的代码是可以列出全部IP的,包含IPV6和传统V4的,楼主的那个也是IP啊,是IPV6
为什么都是这种格式的ip呢 我想要180.102.111.169这种的
你先建立一个例子代码,按照1楼的代码,拷贝过去,可以看到获得的IP地址有IPV6和IPV4的,你得选一个IPV4的
#6
private IEnumerable<System.Net.IPAddress> GetIPs()
{
System.Net.IPAddress[] addressList = Dns.GetHostAddresses(Dns.GetHostName());
return addressList.Where(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork);
}
//调用
foreach (var v in GetIPs())
{
Console.WriteLine(v);
}
#7
win7以上os有ipv4、ipv6两个协议,获取ip地址的时候默认是ipv6的地址,代码要加ipv4的限制,才能输出192.168.20.1这种
#8
ip.AddressFamily == AddressFamily.InterNetwork
#9
楼主的语句加个断点就能看出问题了。
在我电脑(Win 7 32位+VS 2012)上测试的,如下图,只要把[0]改成[1]就OK了。
在我电脑(Win 7 32位+VS 2012)上测试的,如下图,只要把[0]改成[1]就OK了。
![C#怎样获取本机的ip地址啊 C#怎样获取本机的ip地址啊](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9nby9hSFIwY0hNNkx5OXBiV2N0WW1KekxtTnpaRzR1Ym1WMEwzVndiRzloWkM4eU1ERTJNRFF2TURVdk1UUTFPVGd6TXpVNE9GODVOekUxT0RZdWNHNW4%3D.jpg?w=700&webp=1)
#10
又找了台Windows 2003的电脑上测了一下,结果是,2003下只能检测到一个IPV4,而在Windows7下能检测出IPV4和IPV6两个。
在网上搜了一下,如果安装了虚拟机或是多个网卡,应该会检测出更多个。
看来只能一个个的去测试,看看是IPV4的,还是IPV6的了。
在网上搜了一下,如果安装了虚拟机或是多个网卡,应该会检测出更多个。
看来只能一个个的去测试,看看是IPV4的,还是IPV6的了。
#11
public string GetLocalIP()
{
//获取说有网卡信息
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
//判断是否为以太网卡
//Wireless80211 无线网卡 Ppp 宽带连接
//Ethernet 以太网卡
//这里篇幅有限贴几个常用的,其他的返回值大家就自己百度吧!
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
//获取以太网卡网络接口信息
IPInterfaceProperties ip = adapter.GetIPProperties();
//获取单播地址集
UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
foreach (UnicastIPAddressInformation ipadd in ipCollection)
{
//InterNetwork IPV4地址 InterNetworkV6 IPV6地址
//Max MAX 位址
if (ipadd.Address.AddressFamily == AddressFamily.InterNetwork)
//判断是否为ipv4
{
strLocalIP = ipadd.Address.ToString();//获取ip
return strLocalIP;//获取ip
}
}
}
}
return null;
}
#12
需要提醒楼主的是, 很多人的电脑都不是一张网卡, 二个同一张网卡也可能有多个IP
所有11L的方法有点瑕疵,就是IP没有完全列举
最后的结果要是给人看还好,要是一个中间变量,那你可要好好检查一下IP地址是不是你要的那一个.
所有11L的方法有点瑕疵,就是IP没有完全列举
最后的结果要是给人看还好,要是一个中间变量,那你可要好好检查一下IP地址是不是你要的那一个.
public string GetLocalIP()
{
List<string> strIPs = new List<string>();
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in nics)
{
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
var mac = adapter.GetPhysicalAddress(); Console.WriteLine(mac);
IPInterfaceProperties ip = adapter.GetIPProperties();
UnicastIPAddressInformationCollection ipCollection = ip.UnicastAddresses;
foreach (UnicastIPAddressInformation ipadd in ipCollection)
{
//InterNetwork IPV4地址
//InterNetworkV6 IPV6地址
if (ipadd.Address.AddressFamily == AddressFamily.InterNetwork)
{ //判断是否为ipv4
Console.WriteLine(ipadd.Address.ToString());
strIPs.Add(ipadd.Address.ToString());
}
}
}
}
return string.Join(";", strIPs);
}
#13
using System;
using System.Collections.Generic;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Windows.Forms;
用到的引用,已发表的不能编辑真是丹腾
#14
Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault<IPAddress>(a => a.AddressFamily.ToString().Equals("InterNetwork")).ToString()
就这一行代码 简单残暴
#15
Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault<IPAddress>(a => a.AddressFamily.ToString().Equals("InterNetwork")).ToString()
就这一行代码 简单残暴
太残暴,太有效!
#16
IPAddress localAddress = AddressHelper.GetLocalhostIPv4Addresses().First();
#17
using System.Net;
using System.Net.Sockets;
using MyNetworkLibrary;
using System.Net.Sockets;
using MyNetworkLibrary;
#18
IPHostEntry fromHE = Dns.GetHostEntry(Dns.GetHostName());
IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 80);
EndPoint EndPointFrom = (ipEndPointFrom);
toolStripStatusLabel1.Text = EndPointFrom.ToString();
最后显示的结果是这样
怎样才能显示如180.102.111.169这样的格式呢?
IPEndPoint ipEndPointFrom = new IPEndPoint(fromHE.AddressList[0], 80);
0是显示IPv6,把0改成1就是显示IPv4地址
#19
IPAddress localAddress = AddressHelper.GetLocalhostIPv4Addresses().First();
#20
以上所有代码在Win10下测试,声称能够获取IPV4的代码获取的都是本机IP,类似192.168.0.101
#21
Dns 点不出 是需要引用什么吗