본문 바로가기
놀기/잡스러운 것

sockaddr_in에 들어 있는 IP 주소 출력

by Hi~ 2021. 6. 24.

sockaddr_in에 IP 주소를 문자열로 출력해야 할 경우가 있다.

sockaddr_in structure에 대해서는 자료가 많으니 보면되고 아래와 같이 하면 출력된다.

 

#include <stdio.h>
#include <arpa/inet.h>
#include <string.h>

#define IP_ADDR	"91.121.209.194"
#define PORT       12345

int main() {

	struct sockaddr_in sa;
	char ipbuf[INET_ADDRSTRLEN] = { 0, };

	// inet_addr() 대신 inet_pton() 가능
	// c.g. inet_pton(AF_INET, IP_ADDR, &(sa.sin_addr));
	sa.sin_addr.s_addr = inet_addr(IP_ADDR);
	sa.sin_port = htons(PORT);

	memset(ipbuf, 0x00, sizeof(char)*INET_ADDRSTRLEN);
	inet_ntop(AF_INET, &(sa.sin_addr), ipbuf, INET_ADDRSTRLEN);
	printf("IP address : %s\n", ipbuf);
	printf("Port : %d\n", ntohs(sa.sin_port));

	printf("----\n");

	memset(ipbuf, 0x00, sizeof(char)*INET_ADDRSTRLEN);
	strcpy(ipbuf, inet_ntoa(sa.sin_addr));
	printf("IP address : %s\n", ipbuf);
	printf("Port : %d\n", ntohs(sa.sin_port));

	return 0;
}

 

댓글