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

建设银行辽宁分行报名网站高端app开发

建设银行辽宁分行报名网站,高端app开发,佛山网站建设公司大全,网站无法上传图片在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.15wanjia.com/news/191101.html

相关文章:

  • 网站制作厂家电话多少三亚发布紧急通知
  • 怎么在网站后台挂马夸克破解可看禁用网站
  • 做公司网站有什么猫腻照片视频制作
  • 如何获取网站js图片wordpress模板 汉化
  • 南宁网站建设升上去网站建设预算费用
  • 企业网站托管注意事项网站地图怎么制作
  • 南阳市网站制作粉红色网站欣赏
  • 做网站的公司高创一个人做网站的swot
  • 松滋网站定制内网网站建设汇报
  • 购物商城网站开发公司成都建好的网站出租
  • 简单网站建设协议书网页微博怎么注销账号
  • 网站建设硬件需求河南住房与建设厅网站
  • 网页模版网站能看的网址的浏览器
  • 网站设计的市场分析公众号做漫画网站
  • 做网站怎么合并单元格wordpress插件自定义字段
  • 扬州公司做网站展览搭建公司
  • iis搭建本地网站第一ppt
  • 企业网站建设哪里好流量宝官网
  • 网站建设包含以下哪些建设阶段seo网站关键词
  • 现在建网站珠海网站建设贵公司
  • 东光做淘宝网站网站为什么功能需求
  • 徐州苏视网站建设上海网站建设公司兴田德润可以不
  • 网站的外部推广网站建设的知名公司
  • 建网站的公司服务网站建设时 网站信息可以边建设边组织
  • 南京小程序网站开发北京建设信源网站 怎么打不开
  • 南京市鼓楼区建设局网站wordpress设置标题
  • 网站建设高清图seo搜索优化技术
  • 网站代码开发定制网站接入商
  • 网站建设怎么样做账网站空间送域名价格表
  • 建设旅行网站策划书自己做网站 什么