有很多方法可以找到 主机名 和 IP地址 本地机器的。下面是一个使用C程序查找主机名和IP地址的简单方法。
null
我们将使用以下功能:-
gethostname() :gethostname函数检索本地计算机的标准主机名。
gethostbyname() :gethostbyname函数从主机数据库检索与主机名对应的主机信息。
inet_ntoa() :inet_ntoa函数将(Ipv4)互联网地址转换为互联网标准点十进制格式的ASCII字符串。
C/C++
// C program to display hostname // and IP address #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> // Returns hostname for the local computer void checkHostName( int hostname) { if (hostname == -1) { perror ( "gethostname" ); exit (1); } } // Returns host information corresponding to host name void checkHostEntry( struct hostent * hostentry) { if (hostentry == NULL) { perror ( "gethostbyname" ); exit (1); } } // Converts space-delimited IPv4 addresses // to dotted-decimal format void checkIPbuffer( char *IPbuffer) { if (NULL == IPbuffer) { perror ( "inet_ntoa" ); exit (1); } } // Driver code int main() { char hostbuffer[256]; char *IPbuffer; struct hostent *host_entry; int hostname; // To retrieve hostname hostname = gethostname(hostbuffer, sizeof (hostbuffer)); checkHostName(hostname); // To retrieve host information host_entry = gethostbyname(hostbuffer); checkHostEntry(host_entry); // To convert an Internet network // address into ASCII string IPbuffer = inet_ntoa(*(( struct in_addr*) host_entry->h_addr_list[0])); printf ( "Hostname: %s" , hostbuffer); printf ( "Host IP: %s" , IPbuffer); return 0; } |
Hostname: cContainer Host IP: 10.98.162.101
产量因机器而异
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END