
你试试这个,获取正确可用的IP地址:
private IPAddress getIdAddress(){
//IPHostEntry ipEntity = DnsGetHostEntry(DnsGetHostName());
////IPAddress ipAddr = ipEntityAddressList[0];
//IPAddress ipAddr = DnsGetHostAddresses(DnsGetHostName())[0];
//if (ipAddrAddressFamily == SystemNetSocketsAddressFamilyInterNetworkV6)//判断是否IP6协议
//{ // ipAddr = DnsGetHostEntry(DnsGetHostName())AddressList[1]; //}
IPAddress ipAddr = null;
IPAddress[] arrIP = DnsGetHostAddresses(DnsGetHostName());
foreach (IPAddress ip in arrIP)
{
if (SystemNetSocketsAddressFamilyInterNetworkEquals(ipAddressFamily))
{
ipAddr = ip;
break;
}
else if (SystemNetSocketsAddressFamilyInterNetworkV6Equals(ipAddressFamily))
{
ipAddr = ip;
}
} return ipAddr;
}
之前的即时通讯里面用的
第一种:
private void GetIP()
{
string hostName = DnsGetHostName();//本机名
//SystemNetIPAddress[] addressList = DnsGetHostByName(hostName)AddressList;//会警告GetHostByName()已过期,我运行时且只返回了一个IPv4的地址
SystemNetIPAddress[] addressList = DnsGetHostAddresses(hostName);//会返回所有地址,包括IPv4和IPv6
foreach (IPAddress ip in addressList)
{
listBox1ItemsAdd(ipToString());
}
}
第二种:
static string GetLocalIp()
{
string hostname = DnsGetHostName();//得到本机名
//IPHostEntry localhost = DnsGetHostByName(hostname);//方法已过期,只得到IPv4的地址
<SPAN style="WHITE-SPACE: pre"> </SPAN> IPHostEntry localhost = DnsGetHostEntry(hostname);
IPAddress localaddr = localhostAddressList[0];
return localaddrToString();
}
第三种:
string strUrl = "提供IP查询的网站的链接";
Uri uri = new Uri(strUrl);
WebRequest webreq = WebRequestCreate(uri);
Stream s = webreq GetResponse()GetResponseStream();
StreamReader sr = new StreamReader(s, EncodingDefault);
string all = srReadToEnd();
int i = allIndexOf("[") + 1;
//分析字符串得到IP
return ip;
/
我用的是>
gethostname 获取本机名字,gethostbyname 通过前面的名字获取主机具体信息,包括IP地址。MAC地址可以用 Netbios,以上用到的函数都是WIN32 API,具体代码请留****(email或者企鹅)也可以自己百度有现成的VB代码
以上就是关于vs2008C#获取IP地址的问题全部的内容,包括:vs2008C#获取IP地址的问题、如何获取多网卡的IP地址和对应的MAC地址、VB6.0 怎么获得本机的IP和mac地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)