簡體   English   中英

如何在函數中獲取主機名?

[英]How can I get my hostname within a function?

unix hostname程序為我提供了一種非常簡單的方式來獲取“真實的”主機名(而不是localhost。例如,對於我來說,當前unknown74e5[...]df7.att.net )是unknown74e5[...]df7.att.net )。 但是,如何使用C系統調用在自己的代碼中執行此操作? 我想獲取一個char * ,其中包含此字符串,以便可以將其傳遞給gethostbyname和類似名稱。

在討論的同時,我還想知道如何通過UNIX系統調用來獲取IP地址,而不是依賴程序(或更糟糕的是,whatismyip.com)...

謝謝!

gethostname(2)是POSIX強制的C庫函數,為hostname程序提供動力:

   int gethostname(char *name, size_t len);

您可以使用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結構,並且幾乎在所有平台上都可用。 正如Thomas在評論中提到的那樣,glibc將gethostname實現為對uname(2)的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM