Computer >> Máy Tính >  >> Lập trình >> C ++

Làm cách nào để lấy Địa chỉ IP của máy tính cục bộ bằng C / C ++?

Trong phần này, chúng ta sẽ xem cách xem Tên máy chủ và địa chỉ IP của hệ thống cục bộ một cách dễ dàng hơn. Chúng tôi sẽ viết một chương trình C để tìm tên máy chủ và IP.

Một số chức năng sau được sử dụng. Các chức năng này có nhiệm vụ khác nhau. Hãy để chúng tôi xem các chức năng và nhiệm vụ của chúng.

Sr.No Chức năng &Mô tả
1 gethostname ()
Nó tìm tên máy chủ tiêu chuẩn cho máy tính cục bộ.
2 gethostbyname ()
Nó tìm thông tin máy chủ tương ứng với tên máy chủ từ cơ sở dữ liệu máy chủ
3 iten_ntoa ()
Nó chuyển đổi địa chỉ mạng Internet IPv4 thành chuỗi ASCII thành định dạng thập phân có dấu chấm.

Ví dụ

#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);
}

Đầu ra

Current Host Name: soumyadeep-VirtualBox
Host IP: 127.0.1.1