主机名解析成IP地址
来源:互联网 发布:linux查看磁盘空间g 编辑:程序博客网 时间:2024/05/20 15:39
struct hostent *h = gethostbyname(argv[2]);
hostaddr = ((struct in_addr *)h->h_addr_list[0])->s_addr;
argv[2]:是对应的主机名,如:srwp05mgt001
gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。
返回的指针指向一个由Windows Sockets实现分配的结构。应用程序不应该试图修改这个结构或者释放它的任何部分。此外,所有线程共用一份这个结构的拷贝,所以应用程序应该在发出其他Windows Scokets API调用前,把自己所需的信息拷贝下来。
gethostbyname()实现没有必要识别传送给它的IP地址串。对于这样的请求,应该把IP地址串当作一个未知主机名同样处理。如果应用程序有IP地址串需要处理,它应该使用inet_addr()函数把地址串转换为IP地址,然后调用gethostbyaddr()来得到hostent结构。
返回对应于给定主机名的主机信息。
#include <winsock2.h>
struct hostent FAR *PASCAL FAR gethostbyname(const char
FAR * name);
name:指向主机名的指针。
返回类型
struct hostent
{
char FAR * h_name; //正式主机名,每个主机只有一个
char FAR ** h_aliases; //主机名列表,可以有很多,以二维数组的形式存储
short h_addrtype; //IP地址类型,V4或者V6
short h_length; //IP地址长度,如v4是四个字节
char FAR * FAR * h_addr_list; //IP地址列表,h_adr_list[0]为主机IP地址
};
Linux版
#include <netdb.h>
struct hostent *gethostbyname(const char * hostname);
返回:非空指针——成功,空指针——出错,同时设置h_errno
返回值
如果没有错误发生,gethostbyname()返回如上所述的一个指向hostent结构的指针,否则,返回一个空指针。应用程序可以通过WSAGetLastError()来得到一个特定的错误代码。
错误代码
WSANOTINITIALISED 在应用这个API前,必须成功地调用WSAStartup()。
WSAENTDOWN Windows Sockets实现检测到了网络子系统的错误。
WSAHOST_NOT_FOUND 没有找到授权应答主机。
WSATRY_AGAIN 没有找到非授权主机,或者SERVERFAIL。
WSANO_RECOVERY 无法恢复的错误,FORMERR,REFUSED,NOTIMP。
WSANO_DATA 有效的名字,但没有关于请求类型的数据记录。
WSAEINPROGRESS 一个阻塞的Windows Sockets操作正在进行。
WSAEINTR 阻塞调用被WSACancelBlockingCall()取消了.
需要注意的是gethostbyname()函数属于WinSock API库,而在使用WinSock API之前,必须调用WSA-Startup函数,只有该函数成功返回(表示应用程序与WinSock库成功地建立起连接),应用程序才可以调用其他Windows Sockets DLL中的函数。当程序将要结束时,又必须调用WSACleanup 函数进行清理工作,以便释放其占用的资源。WSACleanup 函数用来结束Windows Sockets DLL的使用。
hostaddr = ((struct in_addr *)h->h_addr_list[0])->s_addr;
argv[2]:是对应的主机名,如:srwp05mgt001
gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结构的声明与gethostaddr()中一致。
返回的指针指向一个由Windows Sockets实现分配的结构。应用程序不应该试图修改这个结构或者释放它的任何部分。此外,所有线程共用一份这个结构的拷贝,所以应用程序应该在发出其他Windows Scokets API调用前,把自己所需的信息拷贝下来。
gethostbyname()实现没有必要识别传送给它的IP地址串。对于这样的请求,应该把IP地址串当作一个未知主机名同样处理。如果应用程序有IP地址串需要处理,它应该使用inet_addr()函数把地址串转换为IP地址,然后调用gethostbyaddr()来得到hostent结构。
返回对应于给定主机名的主机信息。
#include <winsock2.h>
struct hostent FAR *PASCAL FAR gethostbyname(const char
FAR * name);
name:指向主机名的指针。
返回类型
struct hostent
{
char FAR * h_name; //正式主机名,每个主机只有一个
char FAR ** h_aliases; //主机名列表,可以有很多,以二维数组的形式存储
short h_addrtype; //IP地址类型,V4或者V6
short h_length; //IP地址长度,如v4是四个字节
char FAR * FAR * h_addr_list; //IP地址列表,h_adr_list[0]为主机IP地址
};
Linux版
#include <netdb.h>
struct hostent *gethostbyname(const char * hostname);
返回:非空指针——成功,空指针——出错,同时设置h_errno
返回值
如果没有错误发生,gethostbyname()返回如上所述的一个指向hostent结构的指针,否则,返回一个空指针。应用程序可以通过WSAGetLastError()来得到一个特定的错误代码。
错误代码
WSANOTINITIALISED 在应用这个API前,必须成功地调用WSAStartup()。
WSAENTDOWN Windows Sockets实现检测到了网络子系统的错误。
WSAHOST_NOT_FOUND 没有找到授权应答主机。
WSATRY_AGAIN 没有找到非授权主机,或者SERVERFAIL。
WSANO_RECOVERY 无法恢复的错误,FORMERR,REFUSED,NOTIMP。
WSANO_DATA 有效的名字,但没有关于请求类型的数据记录。
WSAEINPROGRESS 一个阻塞的Windows Sockets操作正在进行。
WSAEINTR 阻塞调用被WSACancelBlockingCall()取消了.
需要注意的是gethostbyname()函数属于WinSock API库,而在使用WinSock API之前,必须调用WSA-Startup函数,只有该函数成功返回(表示应用程序与WinSock库成功地建立起连接),应用程序才可以调用其他Windows Sockets DLL中的函数。当程序将要结束时,又必须调用WSACleanup 函数进行清理工作,以便释放其占用的资源。WSACleanup 函数用来结束Windows Sockets DLL的使用。
- 主机名解析成IP地址
- java解析主机名获取ip地址
- 对主机名进行IP地址解析(相关知识介绍)
- IP与主机名解析
- IP与主机名解析
- 获取主机名和IP地址
- 获取主机名和IP地址
- 获得主机名和ip地址
- 获取主机名和IP地址
- 获得主机名 和 IP地址
- 通过主机名得到IP地址
- 获得主机名和IP地址
- 根据IP地址查询主机名
- 识别主机名和IP地址
- 根据主机名获取IP地址
- IP与主机名解析(C#)
- Linux设置主机名和配置主机名跟IP地址映射
- 获取本地IP地址和主机名
- Emoji encode
- C++ try()catch()抛异常
- 添加找回鼠标右键新建菜单里的新建office2003/2007/2010文档的简洁方法
- Socket通信-web服务器基本原理(静态)
- Android开发片段–命令行安装,卸载,启动,程序(AM,PM)
- 主机名解析成IP地址
- HTML服务器控件和WEB服务器控件的区别和联系介绍
- OpenGL入门学习
- java中出现乱码的解决办法
- perl中-〉和=〉用法
- [技术分享--RMS篇] 使用 RMS 保护任何文件类型的文档
- 黑马学习笔记——ASP.NET Session丢失问题原因及解决方案
- h264解码器,s3c6410硬件mfc解码分析-H264
- LGPL 商用的说明