【问题标题】:What does struct hostent stands for?struct hostent 代表什么?
【发布时间】:2019-05-08 09:30:03
【问题描述】:

指向 hostent 的指针是 gethostbyname() 返回的结构。

确切的函数签名:struct hostent* gethostbyname(const char*)

而且我不知道 hostent 末尾的 'ent' 部分是什么意思。

当我试图记住我不理解的内容时,我会很健忘,所以请帮助我。

【问题讨论】:

  • 你的意思是指向hostent的指针是gethostbyname2返回的gethostbyname 不返回指向 hostent 的指针,并且 gethostbyname2 不返回结构而是指向的指针
  • 我想“ent”是“entry”的简写。
  • @Jabberwocky 还是 entity ?在那个注释中 gethostbyname2 已经过时了
  • 当我试图记忆时,我变得非常健忘你不会记住这样的界面 - 因为你会弄错它们。您可以在需要时查找它们 - 这就是存在 man 页面的原因。当您需要使用gethostbyname() 时,除非您最近使用它以至于您认为您完全了解它,否则您要么查看另一个用法并复制它,要么阅读man gethostbyname 条目。因为即使您确实认为自己完全了解它,您在编译时也经常会收到编译器警告和错误 - 因为您在不查找时多次出错。
  • 这意味着开发人员考虑过但忘记记录的事情。

标签: c network-programming coding-style


【解决方案1】:

快速的search on GitHub 指向basedefs/netdb.h(网络数据库操作的定义)

<netdb.h> 标头应定义至少包含以下成员的hostent 结构:

char   *h_name       Official name of the host. 
char  **h_aliases    A pointer to an array of pointers to 
                     alternative host names, terminated by a 
                     null pointer. 
int     h_addrtype   Address type. 
int     h_length     The length, in bytes, of the address. 
char  **h_addr_list  A pointer to an array of pointers to network 
                     addresses (in network byte order) for the host, 
                     terminated by a null pointer. 

从那里,official documentation for gethostbyaddr() 包括:

参赛作品应以宿主结构返回。

gethostbyaddr() 函数应返回一个条目,其中包含地址为addr 的主机的地址族类型的地址。
len 参数包含addr 指向的地址的长度。
gethostbyaddr() 函数不需要是可重入的。不需要可重入的函数不需要是线程安全的。

参赛作品应以宿主结构返回。

成功完成后,如果找到请求的 entry,这些函数将返回指向 hostent 结构的指针,如果到达数据库末尾或请求的 ,则返回空指针>条目未找到。

所以你有它:ent 代表 entry。不是实体。

【讨论】:

猜你喜欢
  • 2014-01-06
  • 2013-06-03
  • 2017-10-26
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
  • 2011-11-14
相关资源
最近更新 更多