QT 您所在的位置:网站首页 如何获取域名的所有ip QT

QT

2024-07-11 09:26| 来源: 网络整理| 查看: 265

直接上代码,大家想要可以自行封装成函数

方法一:使用QHostAddress

//QList address = QNetworkInterface::allAddresses(); foreach (QHostAddress ptr , QNetworkInterface::allAddresses()) { if(ptr.protocol() == QAbstractSocket::IPv4Protocol){// 获取ipv4地址 if(!ptr.isLoopback()) // 过滤本地回环127.0.0.1 qDebug() // 遍历每一个IP地址 QList entryList = netInterface.addressEntries(); foreach(QNetworkAddressEntry entry, entryList) { if(entry.ip().toString()!="" && entry.ip().toString()!="0.0.0.0") { rip=entry.ip().toString(); break;//获取到第一个活跃的跳出 } } } }

QT ip地址,格式为 “::ffff:127.0.0.1” 解决方法

买一送一:C++根据域名获取IP地址

使用gethostbyname()函数实现。win平台可能要包含和绑定WSAData

定义内的 struct hostent结构如下:

struct hostent { char *h_name; /* 官方域名,但是似乎并不绝对,百度就是www.a.shifen.com */ char **h_aliases; /* 别名列表,是个二级指针 */ int h_addrtype; /* 地址类型,为AF_INET或AF_INET6之一,百度返回2,故为真应该是AF_INET */ int h_length; /* 保存IP地址长度。IPv4 的长度为 4 个字节,IPv6 的长度为 16 个字节。 */ char **h_addr_list; /* 地址列表,以NULL结尾 */ } #define h_addr h_addr_list[0] /* 向后兼容,返回地址列表的第一个地址,注意返回的是指针 */

上代码:

#include #include extern "C"{ #include #include #include } #ifdef __WIN32__ #include #else #include #endif using namespace std; int main(void) { string buf; // 链接和绑定sock-api库,要在windows下面开发socket都需要这样做 #ifdef __WIN32__ WSAData wsadata; WSAStartup(MAKEWORD(2, 2), &wsadata); #endif // 分析之 struct hostent * conText = gethostbyname("www.baidu.com"); if(!conText){ cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有