如何通过c语言获取ipv6邻居表,急求在vc++6.0中获取IPV6地址的方法,高手请进,谢谢!!...
本人最近getaddrinfo函數獲取本機IP地址,本機的IPV4地址能正確獲得,但本機IPV6地址只能獲得環路地址,即::1。為什么不能獲得IPV6的Global地址或鏈路本地地址。懇請指點,不勝感激!如果還有其它獲取方法請告知,謝謝!源代碼如下:
char AddrName[128];
int RetVal;
BOOL RunForever = FALSE;
WSADATA wsaData;
struct addrinfo Hints, *AddrInfo, *AI;
CString str;
if ((RetVal = WSAStartup(MAKEWORD(2, 2), &wsaData)) != 0)
{
str.Format(“WSAStartup failed with error %d\n“,RetVal);
m_listbox.AddString( str );
WSACleanup();
return ;
}
char szhostname[128];
memset(szhostname,0,128);
memset(&Hints, 0, sizeof(Hints));
Hints.ai_family = AF_UNSPEC;
//Hints.ai_family = AF_INET6;
Hints.ai_socktype = SOCK_STREAM;
Hints.ai_flags=AI_CANONNAME;
gethostname(szhostname,sizeof(szhostname));
RetVal = getaddrinfo(static_cast(szhostname),0, &Hints, &AddrInfo);
if (RetVal != 0)
{
str.Format(“不能解析:主機[%s],錯誤 %d: %s\n“,szhostname, RetVal, gai_strerror(RetVal));
m_listbox.AddString( str );
WSACleanup();
return;
}
//將IP 地址轉換成數字式字符文本
for (AI=AddrInfo; AI!= NULL;AI=AI->ai_next)
{
if (getnameinfo(AI->ai_addr,AI->ai_addrlen,AddrName,sizeof(AddrName),NULL,0,NI_NUMERICHOST) != 0)
strcpy(AddrName, ““);
str.Format(“IPv%d: %s\n“,(AI->ai_family==AF_INET6?6:4), AddrName);
m_listbox.AddString( str );
}
WSACleanup();
人打賞
0人 點贊
主帖獲得的天涯分:0
舉報 |
樓主
|
樓主發言:1次 發圖:0張 | 添加到話題 |
總結
以上是生活随笔為你收集整理的如何通过c语言获取ipv6邻居表,急求在vc++6.0中获取IPV6地址的方法,高手请进,谢谢!!...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言fsetpos是什么,fsetpo
- 下一篇: android 多个标签页,Androi