如何使用 C/C++ 獲取本地計算機的 IP 地址?
在本節中,我們將以一種更簡單的方式瞭解如何檢視本地系統的主機名和 IP 地址。我們將編寫一個 C 程式來查詢主機名和 IP。
使用了一些以下函式。這些函式有不同的任務。讓我們看看這些函式及其任務。
| 序號 | 函式和描述 |
|---|---|
| 1 | gethostname() 為本地計算機查詢標準主機名。 |
| 2 | gethostbyname() 從主機資料庫中查詢與主機名相對應的主機資訊 |
| 3 | iten_ntoa() 將 IPv4 因特網網路地址轉換為點分十進位制格式的 ASCII 字串。 |
示例
#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>
void check_host_name(int hostname) { //This function returns host name for local computer
if (hostname == -1) {
perror("gethostname");
exit(1);
}
}
void check_host_entry(struct hostent * hostentry) { //find host info from host name
if (hostentry == NULL){
perror("gethostbyname");
exit(1);
}
}
void IP_formatter(char *IPbuffer) { //convert IP string to dotted decimal format
if (NULL == IPbuffer) {
perror("inet_ntoa");
exit(1);
}
}
main() {
char host[256];
char *IP;
struct hostent *host_entry;
int hostname;
hostname = gethostname(host, sizeof(host)); //find the host name
check_host_name(hostname);
host_entry = gethostbyname(host); //find host information
check_host_entry(host_entry);
IP = inet_ntoa(*((struct in_addr*) host_entry->h_addr_list[0])); //Convert into IP string
printf("Current Host Name: %s\n", host);
printf("Host IP: %s\n", IP);
}輸出
Current Host Name: soumyadeep-VirtualBox Host IP: 127.0.1.1
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP