问题描述
我不知道如何在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/Unix中,等效物将像:
#include <stdio.h> #include <netdb.h> int main (int argc, char *argv[]) { struct hostent *hstnm; if (argc != 2) { fprintf(stderr, "usage: %s hostname\n", argv[0]); return 1; } hstnm = gethostbyname (argv[1]); if (!hstnm) return 1; printf ("Name: %s\n", hstnm->h_name); return 0; }
和证明它有效的证明:
$ hstnm localhost Name: demon-a21pht
但请自己尝试.只要您的环境正确,应该没问题.
其他推荐答案
有什么问题?
h_name
主机的官方名称(PC).如果 使用DNS或类似的分辨率 系统,它是完全合格的 域名(FQDN)引起 服务器返回答复.如果使用 本地主机文件,这是第一个 IPv4地址之后的条目.
相关问答
捕获c popen in c in c in c in
“C c = new C()"和“C c = new C()"之间的区别和“A c = new C()"当 C 是 Java 中 A 的子类时
C:和C:/
- >和 - >和.在C/C ++?
Matlab在Matlab中的C C ++和C C ++
是c#a = b = c;等于b = c; a = c;而C ++是B = C; a = b ;?
随着循环循环的c in c in c in c in c int阵列
C和C ++与外部" C"链接
&c :: c and&(c :: c)有什么区别?
scanf("%c",&c)和scanf("%c",&c)之间的差异