1、gethostbyaddr()返回对应于给定地址的包含主机名字和地址信息的hostent结构指针。

2、结构的声明如下:struct hostent {char FAR * h_name;char FAR * FAR * h_aliases;short h_addrtype;short h_length;char FAR * FAR * h_addr_list;}; 成员 用途h_name 正规的主机名字(PC)。


【资料图】

3、h_aliases 一个以空指针结尾的可选主机名队列。

4、h_addrtype 返回地址的类型,对于Windows Sockets,这个域总是PF_INET。

5、h_legnth 每个地址的长度(字节数),对应于PF_INET这个域应该为4。

6、h_addr_list 应该以空指针结尾的主机地址的列表,返回的地址是以网络顺序排列的为了保证其他旧的软件的兼容性,h_addr_list[0]被定义为宏h_addr。

7、返回的指针指向一个由Windows Sockets实现分配的结构。

8、应用程序不应该试图修改这个结构或者释放它的任何部分。

9、此外,每一线程仅有一份这个结构的拷贝,所以应用程序应该在发出其他Windows Scokets API调用前,把自己所需的信息拷贝下来。

10、 如果没有错误发生,gethostbyaddr()返回如上所述的一个指向hostent结构的指针,否则,返回一个空指针。

11、应用程序可以通过WSAGetLastError()来得到一个特定的错误代码。

12、错误代码:WSANOTINTIALISED 在应用这个API前,必须成功地调用WSAStartup()。

13、WSAENTDOWN Windows Sockets实现检测到了网络子系统的错误。

14、WSAHOST_NOT_FOUND 没有找到授权应答主机。

15、WSATRY_AGAIN 没有找到非授权主机,或者SERVERFAIL。

16、WSANO_RECOVERY 无法恢复的错误,FORMERR,REFUSED,NOTIMP。

17、WSANO_DATA 有效的名字,但没有关于请求类型的数据记录。

18、WSAEINPROGRESS 一个阻塞的Windows Sockets操作正在进行。

19、WSAEINTR 阻塞调用被WSACancelBlockingCall()取消了.参见:WSAAsyncGetHostByAddr(),gethostbyname() HOSTENT *lpHostEnt;in_addr ina;ina.S_un.S_addr = inet_addr(127.0.0.1); //获取本地主机信息lpHostEnt = gethostbyaddr((char*)&ina.S_un.S_addr, 4, AF_INET);MessageBox(lpHostEnt->h_name); //显示一下主机名称gethostbyaddr()刚才我已经发过了。

20、 gethostbyname()函数 返回对应于给定主机名的主机信息。

21、 #include struct hostent FAR *PASCAL FAR gethostbyname(const char FAR * name); name:指向主机名的指针。

22、 注释: gethostbyname()返回对应于给...。

本文到此分享完毕,希望对大家有所帮助。

推荐内容