当前位置: 首页 > news >正文

美橙建站五站合一软件乐清网站制作公司

美橙建站五站合一软件,乐清网站制作公司,网站开发外包合同范本,网站流量达到多少在Linux系统上用C将主机名称转换为IPv4、IPv6地址 功能 指定一个std::string类型的主机名称&#xff0c;函数解析主机名称为IP地址&#xff0c;含IPv4和IPv6&#xff0c;解析结果以std::vector<std::string>类型返回。解析出错或者解析失败抛出std::string类型的异常消…

在Linux系统上用C++将主机名称转换为IPv4、IPv6地址

功能

指定一个std::string类型的主机名称,函数解析主机名称为IP地址,含IPv4和IPv6,解析结果以std::vector<std::string>类型返回。解析出错或者解析失败抛出std::string类型的异常消息。

源代码 

以前随便写的一个解析域名为IP地址的功能现在需要支持IPv6,所以做了些调整。最后结果如下:

/*C++,将域名解析为IP地址(含IPv4和IPv6)
编译: g++ -o main main.cpp
执行:./main
效果:$ ./main 
13.226.120.15
13.226.120.23
13.226.120.56
13.226.120.3
2600:9000:21e1:1200:1c:b3b0:7700:93a1
2600:9000:21e1:bc00:1c:b3b0:7700:93a1
2600:9000:21e1:9a00:1c:b3b0:7700:93a1
2600:9000:21e1:4e00:1c:b3b0:7700:93a1
2600:9000:21e1:a200:1c:b3b0:7700:93a1
2600:9000:21e1:3600:1c:b3b0:7700:93a1
2600:9000:21e1:1a00:1c:b3b0:7700:93a1
2600:9000:21e1:1800:1c:b3b0:7700:93a1*/// getaddrinfo, gai_strerror, freeaddrinfo
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>// inet_ntop
#include <arpa/inet.h>// strerror
#include <cstring>#include <string>
#include <vector>
#include <iostream>// 域名解析为IP地址,返回地址列表。
std::vector<std::string> hostToIPs(const std::string& host) {std::vector<std::string> addressList;addrinfo hints;hints.ai_family = AF_UNSPEC;hints.ai_socktype = SOCK_STREAM;hints.ai_protocol = 0;hints.ai_flags = 0;hints.ai_canonname = nullptr;hints.ai_addr = nullptr;hints.ai_next = nullptr;addrinfo* result = nullptr;auto res = getaddrinfo(host.c_str(), nullptr, &hints, &result);if (0 != res) {throw std::string(gai_strerror(res));}if (nullptr != result) {int bufferSize = 64;char buffer[64];void* pointer;for (auto rp = result; rp != nullptr; rp = rp->ai_next) {switch (rp->ai_family) {case AF_INET:pointer = (void*)&(((sockaddr_in*)(rp->ai_addr))->sin_addr);break;case AF_INET6:pointer = (void*)&(((sockaddr_in6*)(rp->ai_addr))->sin6_addr);break;default:continue;}if (nullptr == inet_ntop(rp->ai_family, pointer, buffer, bufferSize)) {freeaddrinfo(result);throw std::string("Run inet_ntop fail, errno is ") + std::to_string(errno)+ ", message: " + std::string(strerror(errno));}addressList.emplace_back(std::string(buffer));}freeaddrinfo(result);}if (addressList.size() <= 0) {throw std::string("address list is empty");}return addressList;
}int main() {try {for (const auto& address : hostToIPs("www.english.com")) {std::cout << address << std::endl;}} catch (const std::string& e) {std::cout << e << std::endl;}return 0;
}

运行截图

程序在Ubuntu上开发调试,结果是OK的。解析结果支持IPv4和IPv6地址,主要参考材料是man手册。运行截图:

http://www.yayakq.cn/news/629567/

相关文章:

  • 快速搭建外贸网站大型网站二次开发方案
  • wordpress上图片不显示seo关键词优化是什么意思
  • 百度站长平台账号购买北京网站搜索引擎优化
  • 网站怎么制作 推广lnmp搭建网站
  • 企业网站建设ppt介绍硬件开发流程图
  • 网站建设推广软文案例做网站是怎么赢利的
  • 网站qq微信分享怎么做的泰州网站制作软件
  • 有了域名后怎样做网站php网站怎么用mysql新建数据库
  • 北京网站设计与制作免费素材库网站
  • 网站建设没业务廊坊自助建站模板
  • 织梦网站怎么做备份企业网站开发制作
  • 祖庙高明网站建设无锡市住房和城乡建设部网站
  • 中国住房和城乡建设部网站官网可以做产品宣传的网站
  • 我做的网站怎么打开很慢阀门专业网站建设
  • 做网站设计挣钱吗广州建站工作室
  • 青海省建设厅建管处网站wordpress撰写
  • 营销型网站制作价格小白如何做网站
  • 做网站联系怎么制作二维码并自己编辑内容
  • 公司网站建设应注意什么ui设计的发展趋势
  • asp网站空间安卓app软件制作工具
  • 自己电脑做网站 路由器网站建设优化汕头
  • 怎样换网站关键词新公司网站建设分录
  • 做网站时需要FTP工具吗做网站上饶
  • 南宁门户网站学校建设网站前的市场分析
  • 网站建设数据库软件射阳建设局网站
  • 荆门城乡建设局网站2022年一建考试最新消息
  • 做外贸需要到外汇管理网站惠州最专业的网站建设公司
  • 济南泰安网站建设公司自助式网站
  • 信息技术做网站wordpress 3.6
  • 西安网站代维护最新网站建设合同