C++完成域名解析

network类:

自定义network.h头文件

#ifndef  _WINSOCK_DEPRECATED_NO_WARNINGS
#define  _WINSOCK_DEPRECATED_NO_WARNINGS
#endif

#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif

#ifndef _NetWorkAPI_
#define _NetWorkAPI_

#include<WinSock2.h>

#pragma comment(lib,"ws2_32.lib")
class network
{
public:
    network();
    ~network();
protected:
    int err;
    char *IpAddr[8];  //存域名的ip地址(可能存在多个ip地址)
    bool gethostip();
    int True;//标记有效地IP地址
};
#endif

类代码实现:

#include"network.h"
#include <iostream>

network::~network()
{
    for (int i = 0; i < 8; i++)
    {
        if (*(IpAddr + i))
            delete[] *(IpAddr + i);
        else
            break;
    }
}

network::network()
{
    memset(IpAddr, NULL, 8);
    err = gethostip();
}

bool network::gethostip()
{
    //加载套接字库
    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD(1, 1);    //初始化Socket动态连接库,请求1.1版本的winsocket库  

    err = WSAStartup(wVersionRequested, &wsaData);

    if (LOBYTE(wsaData.wVersion) != 1 ||   //判断请求的winsocket是不是1.1的版本
        HIBYTE(wsaData.wVersion) != 1)
    {
        WSACleanup();          //清盘
        return false;                  //终止对winsocket使用
    }
    //WSADATA ws;
    //WSAStartup(MAKEWORD(2,2),&ws);//
    char http[] = "www.myvip6.com";           //访问服务器域名
    SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);//建立socket
    if (sock == INVALID_SOCKET)
    {
        std::cout << "建立访问socket套接字失败!" << std::endl;
        return false;
    }
    hostent* host = gethostbyname(http);//取得主机的IP地址
    if (host == NULL)
    {
        //std::cout << "主机处于没有联网状态;" << std::endl;
        return false;
    }
    in_addr addr;
    for (int i = 0;; i++)
    {
        char *p = host->h_addr_list[i];
        if (p == NULL)
            break;
        memcpy(&addr.S_un.S_addr, p, host->h_length);
        *(IpAddr + i) = new char[strlen(inet_ntoa(addr)) + 1];
        strcpy(*(IpAddr + i), inet_ntoa(addr));
        //std::cout << *(IpAddr + i);
    }
    return true;
}

通过socket完成域名的解析

时间: 2024-08-29 03:11:16

C++完成域名解析的相关文章

学习笔记:腾讯云--域名解析

一周多的等待终于域名备案完成,开始域名解析.发现好多坑,亏的有个好老师,不然跳进去了我得好几天出不来. 开始域名解析: 1解析域名:腾讯云在域名管理里要点两次解析,第二次才是真正的开始. 注:此处的添加域名,可以添加其他域名 2.添加记录 2.1记录类型这里鼠标滑过的时候有详细的解释.这里我们选A. 2.2主机记录:这里填写主域名和二级域名 这里我犯了一个让我找了好久的错误,我第一遍填写的是www.xiaocigua.cn 结果访问不到服务器. 这里的主机记录直接填写域名前缀就可以.如:直接解析

Windows Server 2003 下安装DNS域名解析服务器

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析).DNS协议运行在UDP协议之上,使用端口号53. 每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开.有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了.这就是DNS协

域名解析设置方法

一.A记录 ①.主机名必须填写: 常用主机名有:www/@/*,效果参见上图说明,用@可以表示主机名为空 . ②.选择解析记录类型为A记录: ③.输入IP(该IP以实际为准,此处仅供参考): ④.点击保存,等待生效. 二.CNAME记录 ①.输入主机名: 常用主机名有:www/@/*,效果参见上图说明. ②.选择解析记录类型为CNAME记录: ③.输入别名地址,如 test.gotoip4.com(此处仅供参考,请填写您的实际值): ④.点击保存,等待生效. 三.邮箱域名解析 3.1.常用邮箱解

【动态域名解析工具】tunnel,国内版的ngrok,花生壳可以睡觉了

在笔者的系列微信开发教程中,有一个比较基础且重要的一节:微信开发的调试.在文章中我推荐了两种动态域名解析的工具用于将本地的开发环境部署成服务器,一种是花生壳,一种是ngrok,但毕竟我等屌丝用不起或者不愿意付费试用花生壳,导致花生壳经常来大姨妈(解析失败).而ngrok的服务器是国外的,而天朝的网络想必大家都懂的.那在这样的一个环境下,调试微信的时候显得特别不方便.无意中呢,看到tunnel这样一个工具,看了下官网的介绍后,觉得尝试使用下,最终让我觉得放弃使用花生壳和ngrok了.至于为何,那我

域名解析与空间搬家

解析一般是在购买域名的地方就做的(域名商提供dns服务器), 也有其他免费的dns, 比较有名的就是 dnspod,, 然后是换空间,,, 我在香港买了个空间10.8.8.8,要把网站从ix搬回来,就是要把域名解析到香港这个了, 换空间: 1.把magento的整个目录打包.上传到新服务器,把magento数据库导出,然后在新服务器上导入. 如果导不进去的是因为magento的数据库使用了外键约束,通过phpmyadmin导入的时候会报错,在导出的sql文件上加一行 SET @[email pr

shell脚本小练习--域名解析

这是一个群里别人让我写的一个小脚本,当做练习发到这里,功能很简单,从一个文件里面提取域名,之后利用nslookup命令对域名进行解析,再按照固定的格式输出到一个新的文件里面(输出规格是为address=/域名/IP),脚本内容如下:  #!/bin/bash for name in `cat /root/dns.File` ;do         nslookup $name| grep Add |awk -v awk_var="$name" '!/#/{printf "ad

Linux搭建DNS二 多域名解析

Linux搭建DNS二 多域名解析继续上一篇文章svr5 服务端 Centtos6 192.168.4.5pc205 客户端 Centos6 192.168.4.405域名hellc.cnhellc.com.cn---------------------------------------- 添加hellc.cn区域 (在配置文件追加) [[email protected] ~]# vim /etc/named.conf options {        directory   "/var/na

服务基础篇 &nbsp; &nbsp; &nbsp; dns 域名解析服务 &nbsp;

实验环境   :     redhat7.2       redhat 6.7      redhat    6.7 搭建主从DNS服务 :         主服务器ip  192.168.1.144     从服务器ip192.168.1.120 客户机   192.168.1.110 服务安装包 修改主配置文件named.conf 监听端口开放 允许任何主机访问 修改named.rfc1912.zone 定义正反向解析区域  ,   服务模式为master  且允许从dns服务器同步数据 修

DNS域名解析协议

一. 根域 就是所谓的".",其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯. 根域服务器我们知道有13台,但是这是错误的观点. 根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主机. 具体的镜像分布可以参考维基百科.这些主机的内容都是一样的 二. 域的划

IP设定、域名解析、

1.网络基础知识 一台主机如果可以连接公网,比如访问www.baidu.com 那么这台主机必然会有 ipaddress GATEWAY dns ############ipaddress############## tcp/ip ipv4 2进制32位 254.254.254.254/255.255.255.0 11111110.11111110.11111110.11111110/11111111.11111111.11111111.00000000 254.254.0.254/255.25