유닉스 소켓-IP 주소 기능

Unix는 IP 주소를 조작하는 데 도움이되는 다양한 함수 호출을 제공합니다. 이 함수는 ASCII 문자열 (사람이 선호하는 것)과 네트워크 바이트 순서 이진 값 (소켓 주소 구조에 저장된 값) 사이에서 인터넷 주소를 변환합니다.

다음 세 가지 함수 호출은 IPv4 주소 지정에 사용됩니다.

  • int inet_aton (const char * strptr, struct in_addr * addrptr)
  • in_addr_t inet_addr (const char * strptr)
  • char * inet_ntoa (struct in_addr inaddr)

int inet_aton (const char * strptr, struct in_addr * addrptr)

이 함수 호출은 인터넷 표준 점 표기법의 지정된 문자열을 네트워크 주소로 변환하고 제공된 구조에 주소를 저장합니다. 변환 된 주소는 네트워크 바이트 순서 (바이트 순서는 왼쪽에서 오른쪽)입니다. 문자열이 유효하면 1을 반환하고 오류가 있으면 0을 반환합니다.

다음은 사용 예입니다-

#include <arpa/inet.h>

(...)

   int retval;
   struct in_addr addrptr
   
   memset(&addrptr, '\0', sizeof(addrptr));
   retval = inet_aton("68.178.157.132", &addrptr);

(...)

in_addr_t inet_addr (const char * strptr)

이 함수 호출은 인터넷 표준 점 표기법의 지정된 문자열을 인터넷 주소로 사용하기에 적합한 정수 값으로 변환합니다. 변환 된 주소는 네트워크 바이트 순서 (바이트 순서는 왼쪽에서 오른쪽)입니다. 32 비트 바이너리 네트워크 바이트 순서의 IPv4 주소 및 오류시 INADDR_NONE을 반환합니다.

다음은 사용 예입니다-

#include <arpa/inet.h>

(...)

   struct sockaddr_in dest;

   memset(&dest, '\0', sizeof(dest));
   dest.sin_addr.s_addr = inet_addr("68.178.157.132");
   
(...)

char * inet_ntoa (struct in_addr inaddr)

이 함수 호출은 지정된 인터넷 호스트 주소를 인터넷 표준 점 표기법의 문자열로 변환합니다.

다음은 사용 예입니다-

#include <arpa/inet.h>

(...)

   char *ip;
   
   ip = inet_ntoa(dest.sin_addr);
   
   printf("IP Address is: %s\n",ip);
   
(...)