`
Poechant
  • 浏览: 229702 次
博客专栏
Bebe66e7-3a30-3fc9-aeea-cfa3b474b591
Nginx高性能Web服务...
浏览量:24333
5738817b-23a1-3a32-86de-632d7da73b1e
Cumulus实时媒体服务...
浏览量:22105
社区版块
存档分类
最新评论

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

 
阅读更多

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

  • Author: 柳大·Poechant(钟超)
  • Email: zhongchao.ustc@gmail.com
  • Blog:Blog.CSDN.net/Poechant
  • Date: April 20th, 2012

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

-

分享到:
评论

相关推荐

    C++POCO库中文编程

    【C++ POCO库中文编程】 POCO库是一个强大的C++类库,其全称为“Portable Components”,致力于为开发互联网时代的网络应用程序提供高效、现代的解决方案。它使用标准的ANSI/ISO C++,并基于STL,具有高度的可移植...

    Poco访问数据库(测试例子MySQl)

    在本文中,我们将深入探讨如何使用Poco库访问MySQL数据库,这是一个C++开发中的常见任务。Poco是一个轻量级、跨平台的开源C++库,提供了多种功能,包括网络、数据存取、XML解析、JSON处理等。在这个测试例子中,我们...

    Poco:TCPServer框架

    **Poco库与TCPServer框架** Poco库是一个开源的C++类库集合,它提供了许多用于构建网络、数据库、日志、XML处理、JSON解析等应用的基础组件。Poco库的设计目标是轻量级、高效且易于使用,使得开发者能够快速构建跨...

    POCO库及文档

    **POCO库详解** POCO库,全称为“Poor Man's Common C++ Object”,是一个开源的C++类库,旨在为开发跨平台的应用程序提供一套轻量级且强大的工具集。POCO库的设计理念是简单、高效且易于使用,它包含了许多现代...

    arm架构下的poco库文件

    在IT领域,Poco库是一个广泛使用的开源C++类库,它为开发跨平台的应用程序提供了许多基础组件。本文将详细探讨在ARM架构下使用Poco库,特别是针对Poco版本1.9.0,以及如何与MySQL、Redis和PostgreSQL数据库进行集成...

    poco库源代码 c++准标准库

    Poco库旨在简化和加速开发过程,尤其适用于网络编程、数据存取、XML处理、JSON操作、线程管理、日期和时间操作以及许多其他领域。它不仅包含了众多实用的类和函数,还提供了现代C++设计模式的实现,使得开发人员可以...

    poco库发送邮件的几个实例

    Poco库是一个功能丰富的C++库,用于构建跨平台的应用程序。它包含了网络、数据库、XML解析、JSON处理、加密、日志等多个模块。在邮件发送方面,Poco库提供了Net库中的MailMessage类和SMTPClientSession类,使得...

    轻量级C++网络库poco文档

    《轻量级C++网络库POCO..."poco-1.7.6-all-doc"这个压缩包中的文档详细阐述了POCO库的各个部分,是学习和使用POCO的重要参考资料。无论你是初次接触C++网络编程,还是寻求更高效的解决方案,POCO都是值得信赖的工具。

    使用POCO库操作sqlite

    使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的库文件, 使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的库文件 使用POCO库操作sqlite, vs2015工程, 包含编译好的POCO-1.94的...

    poco-1.3.6-all-doc poco库的文档

    5. **安装指南**:对于不同操作系统(如Windows、Linux、Mac OS X)的安装和配置步骤,以及如何将Poco库集成到项目中。 6. **发行说明**:1.3.6版本的发行说明会列出此版本相对于先前版本的主要改进、新特性以及...

    C++POCO-lib(中文文档).pdf

    C++ POCO 库中文文档 C++ POCO 库是一个开源的 C++ 类库的集合,主要提供简单的、快速的网络和可移植应用程序的 C++ 开发。该库和 C++ 标准库可以很好的集成并填补 C++ 标准库的功能空缺。POCO 库的模块化、高效的...

    一个开源的C++网络编程库poco-1.3.5-all

    Poco是著名的开源C++库,它为开发者提供了丰富的网络编程工具和类库,使得在C++中处理网络任务变得更加简单高效。Poco-1.3.5-all版本是一个全面的发布,包含了Poco库的多个组件,这些组件涵盖了广泛的编程需求,特别...

    poco库学习

    在Poco库中,网络编程是其核心功能之一。Poco库提供了Net库,包含了HTTP、HTTPS、FTP等协议的客户端和服务器实现,使得开发者可以轻松地进行网络通信。例如,你可以使用Poco::Net::HTTPClientSession来发起HTTP请求...

    Poco库源码

    Poco库源码是C++开发者的一个重要资源,它是一个高度模块化、可移植的开源库,旨在简化和加速各种应用程序的开发,尤其在网络编程和跨平台应用中表现卓越。Poco库由多个组件组成,涵盖了网络、数据访问、XML处理、...

    Poco动态库(VS2013编译)

    Poco动态库是一款广泛使用的开源C++库,它包含了丰富的网络、数据访问、日志、加密、XML解析、JSON处理、线程管理等模块,适用于开发跨平台的应用程序。在这个特定的案例中,我们讨论的是Poco库在Visual Studio 2013...

    编译失败的Poco库

    Poco库是一个开源的C++库,包含了众多用于构建网络、数据库、日志、XML解析、JSON处理、加密和时间管理等任务的组件。在Windows环境下编译Poco库,通常是为了满足特定项目的需求,例如需要针对x64架构进行优化或者与...

    poco库通知与事件

    在Poco库中,通知和事件机制是实现组件间通信和异步编程的关键部分。 通知和事件在软件开发中扮演着重要角色,它们允许对象之间相互通信,而无需直接相互依赖。Poco库中的事件模型基于发布/订阅(publish/subscribe...

    c/c++ poco库api HTML文档说明

    1. **网络编程**: Poco库中的Net组件提供了全面的TCP/IP网络编程接口,包括HTTP、HTTPS、FTP、SMTP等协议的支持。你可以使用这些接口轻松实现Web服务客户端和服务器,文件上传下载,邮件发送等功能。 2. **数据访问...

    poco-1.7.6.zip

    9. **加密和安全**:Poco库的Crypto模块提供了加密算法,如AES、RSA等,以及SSL/TLS支持,确保数据的安全传输。 10. **时间日期处理**:Poco库包含时间日期相关的类,便于进行日期计算、时间间隔处理以及时间格式...

Global site tag (gtag.js) - Google Analytics