- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我遇到了下面的代码截图:
struct hostent *hp;
hp = my_gethostbyname(localhost);
if (hp == NULL) {
ls_syslog(LOG_ERR, I18N_FUNC_FAIL, fname, "my_gethostbyname()");
return -1;
}
strcpy(localhost, hp->h_name);
memcpy(&addr, hp->h_addr, hp->h_length);
我对最后一句比较迷惑,struct hostent的声明是这样的:
struct hostent {
char *h_name; /* official name of host */
char **h_aliases; /* alias list */
int h_addrtype; /* host address type */
int h_length; /* length of address */
char **h_addr_list; /* list of addresses */
};
它没有名为“h_addr”的字段,但代码确实可以编译,谁能告诉我为什么?谢谢。
最佳答案
你错过了它下面的这一点:
#define h_addr h_addr_list[0] /* for backward compatibility */
所以不,没有问题。
关于linux - struct hostent 是否有字段 "h_addr"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11405819/
指向 hostent 的指针是 gethostbyname() 返回的结构。 确切的函数签名:struct hostent* gethostbyname(const char*) 我不知道 hoste
我正在梳理一个简单的客户端套接字程序以了解它是如何工作的。 当我调用 gethostbyname() 时,它将填充我的 hostent 结构中的各个字段。但是,当我将 h_addr 复制到我的 soc
我正在编写一些代码来查找网络服务器。它位于 C 语言中。 我有这个 sprintf(pre_ip, "%d.%d.%d.%d", num1, num2, num3, num4); num1-4 是一个
struct hostent *gethostbyname(const char *name) 请注意,hostent.h_addr_list 是一个具有可变长度的字段。 gethostbyname
我遇到了下面的代码截图: struct hostent *hp; hp = my_gethostbyname(localhost); if (hp == NULL) { ls_
我一直在研究如何为 Linux 构建基本数据包嗅探器的小教程。我让一切正常,现在我想添加 IP 到主机的映射。 在我添加这个函数之前一切正常: void IPtoHostname(char *ipad
gethostbyname_r的原型(prototype)是: int gethostbyname_r(const char *name, struct hostent *ret, char
我正在为 TCP 连接编写客户端,从 IP 到 socket_addr 的转换会导致内存泄漏。 流程如下: #include #include #include /** there is som
我有这个生成 http-webrequest 的代码,但我不知道如何将 url 添加到主机常量,因为每次我用代码执行此操作时,它都会向我显示此错误: Additional information: O
在我的 linux C++ 应用程序中,我有一个包含 h_addr_list 的 hostent 结构。我希望 h_addr_list 包含的 IP 包含在 struct sockaddr 中。你知道
我试图找出一段代码来构建一个 hostent 对象,更具体地说,它的工作部分是填充 h_addr_list 数组。 我对分配到数组中的值被强制转换为 char* 这一事实感到困惑,因为据我所知,这个数
我是网络编程的新手。以下结构定义让我很困惑。这里的h_addr_list是一个定义为字符串的数组,但它用来存放in_addr结构的数组。为什么它不定义为 struct in_addr **h_addr
我是一名优秀的程序员,十分优秀!