socket编程之gethostbyname获取IP列表和Host别名列表
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别名列表相关推荐
- [深入浅出WP8.1(Runtime)]Socket编程之UDP协议
13.3 Socket编程之UDP协议 UDP协议和TCP协议都是Socket编程的协议,但是与TCP协议不同,UDP协议并不提供超时重传,出错重传等功能,也就是说其是不可靠的协议.UDP适用于一次只 ...
- 老雷socket编程之PHP利用socket扩展实现聊天服务
老雷socket编程之PHP利用socket扩展实现聊天服务 socket聊天服务原理 PHP有两个socket的扩展 sockets和streams sockets socket_create(AF ...
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
转载:http://blog.csdn.net/apollon_krj/article/details/53437764#0-tsina-1-58570-397232819ff9a47a7b7e80a ...
- Linux下socket编程之UDP简单实现
本文实现一个简单的UDP小例子,来说明Linux下socket编程之UDP的简单实现.本文主要包括三个部分:服务器端的实现,客服端的实现和通信测试.实现的功能:客服端发送一条消息给服务器端,服务器端把 ...
- socket编程之 accept函数的理解
在进入我们的正题之前,再来复习一波编写服务器的函数流程吧 服务器端:socket()-->bind( )-->listen()-->accept()-->read()/writ ...
- Linux下Socket编程之TCP应用
现在,我们用前面所构建的socket类,重新设计<Linux下Socket编程之TCP Server端>中echo的服务器,然后设计客户端程序. echo服务器的工作原理很简单: 1.接收 ...
- 黑马程序员:Socket编程之(UDP vs TCP)
---------------------- ASP.Net+Unity开发. .Net培训.期待与您交流! ---------------------- UDP和TCP都是传输协议,设备之间遵循通讯 ...
- Socket中EndPoint只获取ip,不要port
EndPoint包含了ip和port,但是只想要获取ip,只能先把EndPoint转为IpEndPoint,然后从IpEndPoint中可以获取ip.具体如下: //EndPoint endPoint ...
- Windows Socket编程之TCP实现大文件的传输
前言: UDP版本可参考被人博客: http://blog.csdn.net/luchengtao11/article/details/71016222 本文所述代码工程托管在Github: http ...
最新文章
- 嬴彻与东风商用车完成L3重卡A样车验收,加速自动驾驶产品化
- 1223: 输出汉诺塔问题的盘子移动步骤(Java)
- 【机器学习算法专题(蓄力计划)】十八、机器学习中SVM算法中的硬间隔和软间隔
- android wps表格如何设置边框颜色
- 中国象棋源码c语言,中国象棋C语言源代码.doc
- php字符串分割汉字,php支持中文字符串分割的函数
- android知识杂记(一)
- gauscoor软件怎么用_高斯坐标经纬度转换器
- 表单必填标星_laravel-admin必填项加星号
- Swift游戏实战-跑酷熊猫 08 产生源源不断的移动平台
- 如何提高工作杠杆率?卖得更贵与卖出更多次
- 深度剖析JAVA软件工程师
- python爬取喜马拉雅音频
- 安装程序 Repack 攻略 之 CAB 篇
- 蓝桥杯,历届试题,九宫重排
- vue组件走马灯_Vue-component | 文字走马灯组件
- qrcode.js生成微信二维码
- Git 爬坑 - 建立远程仓库
- [生存志] 第124节 经络气穴精微
- 异地数据库同步解决方案
热门文章
- 【Python】青少年蓝桥杯_每日一题_7.11_画太阳
- c语言作业皇帝的许诺,C语言函数大全(s开头) (1)/继
- mysql实时读写_[DataBase] MySql 查看实时日志
- mysql 立方根函数_PostgreSQL基础知识之SQL操作符实践指南
- laravel mysql json_mysql – Laravel JSON where子句不区分大小写
- 浅析数据中心电气系统检测与认证
- 弱电工程计算机网络系统基础知识
- 数据中心空调故障案例集
- ML:MLOps系列讲解之《MLOps的定义与发展—你为什么可能想使用机器学习》解读
- TypeError: ‘method‘ object is not subscriptable