Creative Code

Chapter3(서버에 접속한 IP주소, 포트번호 출력) 본문

TCP IP 소켓프로그래밍

Chapter3(서버에 접속한 IP주소, 포트번호 출력)

빛하루 2023. 10. 10. 16:31

※endian_conv.c파일

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

int main(int argc, char *argv[])
{
	unsigned short host_port=0x1234;
	unsigned short net_port;
	unsigned long host_addr=0x12345678;
	unsigned long net_addr;
	
	net_port=htons(host_port);
	net_addr=htonl(host_addr);
	
	printf("Host ordered port: %#x \n", host_port); // 빅엔디안
	printf("Network ordered port: %#x \n", net_port); // 리틀엔디안
	printf("Host ordered address: %#lx \n", host_addr); // 빅엔디안
	printf("Network ordered address: %#lx \n", net_addr); // 리틀엔디안
	return 0;
}

※inet_addr.c파일

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

int main(int argc, char *argv[])
{
	char *addr1 = "127.212.124.78";  // 첫 번째 IP 주소를 문자열로 설정
	char *addr2 = "127.212.124.256"; // 두 번째 IP 주소를 문자열로 설정

	unsigned long conv_addr = inet_addr(addr1); // 첫 번째 주소를 네트워크 바이트 순서로 변환하여 변수에 저장
	if (conv_addr == INADDR_NONE)
		printf("Error occured! \n"); // 변환 실패 시 오류 메시지 출력
	else
		printf("Network ordered integer addr: %#lx \n", conv_addr); // 변환된 네트워크 바이트 순서의 정수값 출력
	
	conv_addr = inet_addr(addr2); // 두 번째 주소를 네트워크 바이트 순서로 변환하여 변수에 저장
	if (conv_addr == INADDR_NONE)
		printf("Error occureded \n"); // 변환 실패 시 오류 메시지 출력
	else
		printf("Network ordered integer addr: %#lx \n\n", conv_addr); // 변환된 네트워크 바이트 순서의 정수값 출력
	
	return 0;
}

※inet_aton.c파일

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

// 오류 처리 함수 정의
void error_handling(char *message);

int main(int argc, char *argv[])
{
	char *addr = "127.232.124.79"; // 변환할 IP 주소를 문자열로 설정
	struct sockaddr_in addr_inet; // IP 주소를 저장할 구조체

	// inet_aton 함수를 사용하여 문자열 형태의 IP 주소를 네트워크 바이트 순서로 변환하여 addr_inet 구조체에 저장
	if (!inet_aton(addr, &addr_inet.sin_addr))
		error_handling("Conversion error"); // 변환 실패 시 오류 메시지 출력 및 오류 처리 함수 호출
	else
		printf("Network ordered integer addr: %#x \n", addr_inet.sin_addr.s_addr); // 변환된 네트워크 바이트 순서의 정수값 출력
	return 0;
}

// 오류 처리 함수 구현
void error_handling(char *message)
{
	fputs(message, stderr); // 오류 메시지를 표준 오류 스트림에 출력
	fputc('\n', stderr);    // 개행 문자 출력
	exit(1);                // 프로그램 종료
}

 

'TCP IP 소켓프로그래밍' 카테고리의 다른 글

Chapter8(호스트 정보 조회)  (0) 2023.10.11
Chapter9(버퍼 입력받기)  (0) 2023.10.11
Chapter5(echo_client)  (0) 2023.10.11
Chapter4(서버에 순차접속)  (0) 2023.10.11
Chapter1(서버,클라이언트 통신)  (0) 2023.10.10