POCO库中文编程参考指南(9)Poco::Net::DNS

简介: 1 Poco::Net::DNS namespace Poco { namespace Net { class Net_API DNS { public: static HostEntry hostByName(const std::string& hostname); ...

1 Poco::Net::DNS

namespace Poco {
namespace Net {
class Net_API DNS {
public:
    static HostEntry hostByName(const std::string& hostname);
    static HostEntry hostByAddress(const IPAddress& address);
    static HostEntry resolve(const std::string& address);
    static IPAddress resolveOne(const std::string& address);
    static HostEntry thisHost();
    static std::string hostName();
};
}
}

HostEntry 中存储 host primary name(canonical name)、alias name list、IP address list。

2 相关 API

得到一个 HostEntry 实例:

const HostEntry& entry = DNS::hostByName("google.com");

输出域名:

std::cout << entry.name() << std::endl;

Address 和 Alias:

const HostEntry::AliasList& aliases = entry.aliases();
const HostEntry::AddressList& addrs = entry.addresses();

3 Source code

POCO 的官方文档中的 Sample 有错误,以下提供一个正确的示例,其中域名是通过参数传入的。

#include "Poco/Net/DNS.h"
#include <iostream>
using Poco::Net::DNS;
using Poco::Net::IPAddress;
using Poco::Net::HostEntry;
int main(int argc, char** argv)
{
    if (argc != 2) {
        std::cout << "Invalid argument number." << std::endl;
    }
    const HostEntry& entry = DNS::hostByName(argv[1]);
    std::cout << "Canonical Name: " << entry.name() << std::endl;

    const HostEntry::AliasList& aliases = entry.aliases();
    for (HostEntry::AliasList::const_iterator it = aliases.begin();
        it !=   aliases.end(); ++it)
        std::cout << "Alias: " << *it << std::endl;

    const HostEntry::AddressList& addrs = entry.addresses();
    for (HostEntry::AddressList::const_iterator it = addrs.begin();
        it !=   addrs.end(); ++it)
        std::cout << "Address: " << it->toString() << std::endl;

    return 0;
}

编译:

$ g++ name_solver.cpp -o name_solver \
-I/usr/local/include -I/usr/local/lib -lPocoNet

运行:

$ ./name_solver baidu.com
Canonical Name: baidu.com
Address: 123.125.114.144
Address: 123.125.114.144
Address: 220.181.111.85
Address: 220.181.111.85
Address: 220.181.111.86
Address: 220.181.111.86

$ ./name_solver www.ustc.edu.cn
Canonical Name: ustc.edu.cn
Address: 202.38.64.246
Address: 202.38.64.246

-

转载请注明来自柳大的CSDN博客:Blog.CSDN.net/Poechant

目录
相关文章
|
4月前
|
人工智能 机器人 C#
Windows编程课设(C#)——基于WPF和.net的即时通讯系统(仿微信)
一款参考QQ、微信的即时通讯软件。采用CS结构,客户端基于.Net与WPF开发,服务端使用Java开发。
|
7月前
|
人工智能 自然语言处理 程序员
.NET开发工作效率提升利器 - CodeGeeX AI编程助手
.NET开发工作效率提升利器 - CodeGeeX AI编程助手
138 0
|
7月前
|
人工智能 自然语言处理 程序员
.NET开发工作效率提升利器 - CodeGeeX AI编程助手
.NET开发工作效率提升利器 - CodeGeeX AI编程助手
106 1
|
9月前
|
SQL 开发框架 缓存
.NET的并发编程(TPL编程)是什么? (下)
.NET的并发编程(TPL编程)是什么? (下)
|
9月前
|
SQL 开发框架 缓存
|
11月前
|
人工智能 机器人 API
.NET面向AI编程——SK框架(SemanticKernel)的简易入门实践
随着ChatGPT开始在各个领域遍地开花,有关的应用也开始层出不穷。随着微软开源SK框架,无疑是给.NET开发者带来面向AI应用的新机遇。以下内容,通过创建一个简单的prompt开始,开发一个使用SK框架进行开发的入门教程,供参考。
209 0
|
存储 Go 网络架构
Go HTTP 编程 | 02 - net/http 包剖析
Go HTTP 编程 | 02 - net/http 包剖析
Go HTTP 编程 | 02 - net/http 包剖析
C#编程-140:Net.Mail类发送邮件
C#编程-140:Net.Mail类发送邮件
C#编程-140:Net.Mail类发送邮件
C#编程-64:ADO.NET对象模型复习笔记
C#编程-64:ADO.NET对象模型复习笔记
C#编程-64:ADO.NET对象模型复习笔记
|
移动开发 数据可视化 安全
C#编程基础——C#与.NET的关系
C#编程基础——C#与.NET的关系
239 0
C#编程基础——C#与.NET的关系