如何在函数中获取主机名?

时间:2013-04-08 11:19:11

标签: c hostname

unix hostname程序为我提供了一种非常简单的方法来获取我的“真实”主机名(而不是localhost。例如,对我而言,它目前是unknown74e5[...]df7.att.net)。但是如何使用C系统调用在我自己的代码中执行此操作?我想得到一个char *,其中包含此字符串,以便我可以将其传递给gethostbyname和类似字符。

虽然我很喜欢,但我也想知道如何通过UNIX系统调用获取我的IP地址,而不是依赖于程序(或者更糟的是,whatismyip.com)......

谢谢!

2 个答案:

答案 0 :(得分:3)

gethostname(2)是POSIX规定的C库函数,为hostname程序提供支持:

   int gethostname(char *name, size_t len);

答案 1 :(得分:1)

您可以使用uname(2)来获取填充信息的struct utsname。您对nodename

感兴趣
struct utsname {
    char sysname[];    /* Operating system name (e.g., "Linux") */
    char nodename[];   /* Name within "some implementation-defined network". */

POSIX还提到uname函数和utsname结构,几乎可在所有平台上使用。正如托马斯在评论中提到的那样,glibc实施gethostname作为对uname(2)的调用。