gethostbyname 函数原型:

struct hostent FAR * WSAAPI gethostbyname( _In_z_ const char FAR * name );

gethostbyname 参数为一个域名,返回一个指向hostent 的指针

hostent结构体内部包含了主机名、别名、IP地址列表等内容

struct  hostent {
        char    FAR * h_name;           /* official name of host */
        char    FAR * FAR * h_aliases;  /* alias list */
        short   h_addrtype;             /* host address type */
        short   h_length;               /* length of address */
        char    FAR * FAR * h_addr_list; /* list of addresses */
#define h_addr  h_addr_list[0]          /* address, for backward compat */
};

//#define _WINSOCK_DEPRECATED_NO_WARNINGS

#define _WINSOCK_DEPRECATED_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS

#include<WinSock2.h>
#include<iostream>
#include <windows.h>

using namespace std;

#pragma comment(lib, "ws2_32.lib")

int main()
{

WORD wVersionRequested;
    WSADATA wsaData;
    int err;

wVersionRequested = MAKEWORD(1, 1);

err = WSAStartup(wVersionRequested, &wsaData);
    if (err != 0) {
        return 0;
    }

hostent *host = gethostbyname("ueditor.baidu.com");

printf("host name alias 列表: \n");
    int x;
    for (x = 0; host->h_aliases[x]; x++) {
        printf("%s\n", host->h_aliases[x]);
    }

printf("IP列表: \n");

for (x = 0; ; x++)
        //for (x = 0; *host->h_addr_list; x++) //2个for写法一样
    {
        printf("IP:[%d][%s]\n", x, inet_ntoa(*((in_addr *)host->h_addr_list[x])));
        if (host->h_addr_list[x] + host->h_length >= host->h_name)
        {
            break;
        }
    }

/*  host->h_addr_list[i]是地址的指针,host->h_length是地址的长度(字节数),
    两者相加是地址结束的指针,host->h_name在所有地址之后,
    所以如果host->h_addr_list[i] + host->h_length >= host->h_name,就表示所有地址都取完了。*/

getchar();

return 0;
}

貌似有点问题?有空再说。

socket编程之gethostbyname获取IP列表和Host别名列表相关推荐

  1. [深入浅出WP8.1(Runtime)]Socket编程之UDP协议

    13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...

  2. 老雷socket编程之PHP利用socket扩展实现聊天服务

    老雷socket编程之PHP利用socket扩展实现聊天服务 socket聊天服务原理 PHP有两个socket的扩展 sockets和streams sockets socket_create(AF ...

  3. 基于Linux的Socket编程之TCP全双工Server-Client聊天程序

    转载:http://blog.csdn.net/apollon_krj/article/details/53437764#0-tsina-1-58570-397232819ff9a47a7b7e80a ...

  4. Linux下socket编程之UDP简单实现

    本文实现一个简单的UDP小例子,来说明Linux下socket编程之UDP的简单实现.本文主要包括三个部分:服务器端的实现,客服端的实现和通信测试.实现的功能:客服端发送一条消息给服务器端,服务器端把 ...

  5. socket编程之 accept函数的理解

    在进入我们的正题之前,再来复习一波编写服务器的函数流程吧 服务器端:socket()-->bind( )-->listen()-->accept()-->read()/writ ...

  6. Linux下Socket编程之TCP应用

    现在,我们用前面所构建的socket类,重新设计<Linux下Socket编程之TCP Server端>中echo的服务器,然后设计客户端程序. echo服务器的工作原理很简单: 1.接收 ...

  7. 黑马程序员:Socket编程之(UDP vs TCP)

    ---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- UDP和TCP都是传输协议,设备之间遵循通讯 ...

  8. Socket中EndPoint只获取ip,不要port

    EndPoint包含了ip和port,但是只想要获取ip,只能先把EndPoint转为IpEndPoint,然后从IpEndPoint中可以获取ip.具体如下: //EndPoint endPoint ...

  9. Windows Socket编程之TCP实现大文件的传输

    前言: UDP版本可参考被人博客: http://blog.csdn.net/luchengtao11/article/details/71016222 本文所述代码工程托管在Github: http ...

最新文章

  1. 嬴彻与东风商用车完成L3重卡A样车验收,加速自动驾驶产品化
  2. 1223: 输出汉诺塔问题的盘子移动步骤(Java)
  3. 【机器学习算法专题(蓄力计划)】十八、机器学习中SVM算法中的硬间隔和软间隔
  4. android wps表格如何设置边框颜色
  5. 中国象棋源码c语言,中国象棋C语言源代码.doc
  6. php字符串分割汉字,php支持中文字符串分割的函数
  7. android知识杂记(一)
  8. gauscoor软件怎么用_高斯坐标经纬度转换器
  9. 表单必填标星_laravel-admin必填项加星号
  10. Swift游戏实战-跑酷熊猫 08 产生源源不断的移动平台
  11. 如何提高工作杠杆率?卖得更贵与卖出更多次
  12. 深度剖析JAVA软件工程师
  13. python爬取喜马拉雅音频
  14. 安装程序 Repack 攻略 之 CAB 篇
  15. 蓝桥杯,历届试题,九宫重排
  16. vue组件走马灯_Vue-component | 文字走马灯组件
  17. qrcode.js生成微信二维码
  18. Git 爬坑 - 建立远程仓库
  19. [生存志] 第124节 经络气穴精微
  20. 异地数据库同步解决方案

热门文章

  1. 【Python】青少年蓝桥杯_每日一题_7.11_画太阳
  2. c语言作业皇帝的许诺,C语言函数大全(s开头) (1)/继
  3. mysql实时读写_[DataBase] MySql 查看实时日志
  4. mysql 立方根函数_PostgreSQL基础知识之SQL操作符实践指南
  5. laravel mysql json_mysql – Laravel JSON where子句不区分大小写
  6. 浅析数据中心电气系统检测与认证
  7. 弱电工程计算机网络系统基础知识
  8. 数据中心空调故障案例集
  9. ML:MLOps系列讲解之《MLOps的定义与发展—你为什么可能想使用机器学习》解读
  10. TypeError: ‘method‘ object is not subscriptable