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

C IP 주소를 확인하는 프로그램

<시간/>

이 프로그램에서는 C를 사용하여 IP 주소를 확인하는 방법을 볼 것입니다. IPv4 주소는 점-10진수 표기법으로 표시됩니다. 4개의 10진수가 있습니다(모두 0에서 255 사이). 이 네 개의 숫자는 세 개의 점으로 구분됩니다.

유효한 IP의 예:192.168.4.1

IP 주소를 확인하려면 다음 단계를 따라야 합니다.

  • 점 "."을 사용하여 문자열(IP 주소)을 토큰화합니다. 구분자

  • 하위 문자열에 숫자가 아닌 문자가 포함되어 있으면 false를 반환합니다.

  • 각 토큰의 숫자가 0에서 255 사이가 아니면 false를 반환합니다.

  • 정확히 3개의 점과 4개의 부분이 있으면 유효한 IP 주소입니다.

예시 코드

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int validate_number(char *str) {
   while (*str) {
      if(!isdigit(*str)){ //if the character is not a number, return
         false
         return 0;
      }
      str++; //point to next character
   }
   return 1;
}
int validate_ip(char *ip) { //check whether the IP is valid or not
   int i, num, dots = 0;
   char *ptr;
   if (ip == NULL)
      return 0;
      ptr = strtok(ip, "."); //cut the string using dor delimiter
      if (ptr == NULL)
         return 0;
   while (ptr) {
      if (!validate_number(ptr)) //check whether the sub string is
         holding only number or not
         return 0;
         num = atoi(ptr); //convert substring to number
         if (num >= 0 && num <= 255) {
            ptr = strtok(NULL, "."); //cut the next part of the string
            if (ptr != NULL)
               dots++; //increase the dot count
         } else
            return 0;
    }
    if (dots != 3) //if the number of dots are not 3, return false
       return 0;
      return 1;
}
int main() {
   char ip1[] = "192.168.4.1";
   char ip2[] = "172.16.253.1";
   char ip3[] = "192.800.100.1";
   char ip4[] = "125.512.100.abc";
   validate_ip(ip1)? printf("Valid\n"): printf("Not valid\n");
   validate_ip(ip2)? printf("Valid\n"): printf("Not valid\n");
   validate_ip(ip3)? printf("Valid\n"): printf("Not valid\n");
   validate_ip(ip4)? printf("Valid\n"): printf("Not valid\n");
}

출력

Valid
Valid
Not valid
Not valid