Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 호스트 이름과 IP 주소를 표시하는 프로그램

<시간/>

이 섹션에서는 로컬 시스템의 호스트 이름과 IP 주소를 보다 쉽게 ​​보는 방법을 살펴보겠습니다. 호스트 이름과 IP를 찾는 C 프로그램을 작성합니다.

다음 기능 중 일부가 사용됩니다. 이러한 기능에는 다른 작업이 있습니다. 기능과 작업을 살펴보겠습니다.

함수 설명
gethostname() 로컬 컴퓨터의 표준 호스트 이름을 찾습니다.
gethostbyname() 호스트 데이터베이스에서 호스트 이름에 해당하는 호스트 정보를 찾습니다.
iten_ntoa() IPv4 인터넷 네트워크 주소를 ASCII 문자열을 점분리 10진수 형식으로 변환합니다.

예시 코드

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

출력(Linux 시스템에서 테스트됨)

Current Host Name: soumyadeep-VirtualBox
Host IP: 127.0.1.1