Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C in_addr的数组_C_Arrays - Fatal编程技术网

C in_addr的数组

C in_addr的数组,c,arrays,C,Arrays,我想使用gethostbyname()创建in_addr的数组。在浏览Google之后,我发现了以下短代码(位于): 看到这个结果,我很满意,因为我想要一个域的IP地址列表 但我只有一个问题:我不知道如何将这个IP地址列表保存在一个数组中(大小与地址数相同)。。。你有没有碰巧得到一个例子 谢谢hostentry结构已经提供了IP地址列表作为数组()。在您的代码示例中,它被称为he->h\u addr\u list,但是使用*he->h\u addr\u list++遍历它会丢失对它的引用 如果要

我想使用gethostbyname()创建in_addr的数组。在浏览Google之后,我发现了以下短代码(位于):

看到这个结果,我很满意,因为我想要一个域的IP地址列表

但我只有一个问题:我不知道如何将这个IP地址列表保存在一个数组中(大小与地址数相同)。。。你有没有碰巧得到一个例子


谢谢

hostentry结构已经提供了IP地址列表作为数组()。在您的代码示例中,它被称为
he->h\u addr\u list
,但是使用
*he->h\u addr\u list++
遍历它会丢失对它的引用

如果要复制阵列,需要计算出它的大小,然后malloc一些内存来存储它,然后memcpy整个阵列

/*
 * gethostbyname.c - Example of using gethostbyname(3)
 * Martin Vidner <mvidner@suse.cz>
 */

#include <stdio.h>
#include <netdb.h>
#include <netinet/in.h>

struct hostent *he;
struct in_addr a;

int
main (int argc, char **argv)
{
    if (argc != 2)
    {
        fprintf(stderr, "usage: %s hostname\n", argv[0]);
        return 1;
    }
    he = gethostbyname (argv[1]);
    if (he)
    {
        printf("name: %s\n", he->h_name);
        while (*he->h_aliases)
            printf("alias: %s\n", *he->h_aliases++);
        while (*he->h_addr_list)
        {
            bcopy(*he->h_addr_list++, (char *) &a, sizeof(a));
            printf("address: %s\n", inet_ntoa(a));
        }
    }
    else
        herror(argv[0]);
    return 0;
}
$ ./a.out google.com
name: google.com
address: 74.125.45.100
address: 74.125.53.100
address: 74.125.67.100