h_name; 要打印的输出变量。 上述代码用于-6ren">
gpt4 book ai didi

c - 在 C 中获取主机名

转载 作者:太空狗 更新时间:2023-10-29 16:42:48 25 4
gpt4 key购买 nike

我不知道如何用 C 编写应用程序,但我需要一个小程序可以:

lh = gethostbyname("localhost");
output = lh->h_name;

要打印的输出变量。

上述代码用于 PHP MongoDB 数据库驱动程序以获取计算机的主机名(主机名是输入的一部分以生成唯一 ID)。我怀疑这会返回主机名,所以我想要一些证据。

任何代码示例都是最有帮助的。

快乐的一天。

最佳答案

#include <stdio.h>
#include <netdb.h>


int main(int argc, char *argv[])
{
struct hostent *lh = gethostbyname("localhost");

if (lh)
puts(lh->h_name);
else
herror("gethostbyname");

return 0;
}

这不是确定主机名的非常可靠的方法,尽管它有时可能有效。 (返回的内容取决于 /etc/hosts 的设置方式)。如果你有这样一行:

127.0.0.1    foobar    localhost

...然后它将返回“foobar”。如果你反过来使用它,这也很常见,那么它只会返回“localhost”。更可靠的方法是使用 gethostname() 函数:

#include <stdio.h>
#include <unistd.h>
#include <limits.h>

int main(int argc, char *argv[])
{
char hostname[HOST_NAME_MAX + 1];

hostname[HOST_NAME_MAX] = 0;
if (gethostname(hostname, HOST_NAME_MAX) == 0)
puts(hostname);
else
perror("gethostname");

return 0;
}

关于c - 在 C 中获取主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com