본문 바로가기
프로그래밍/C

윈도우 소켓 ] 소켓과 연결된 원격 호스트의 IP주소와 Port번호 가져오기, getpeername()

by eteo 2023. 10. 28.

 

 

 

getpeername()

 

int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
  • sockfd: 정보를 얻고자 하는 소켓의 파일 디스크립터
  • addr: 원격 호스트 주소 정보를 저장할 sockaddr 구조체 포인터. 주로 struct sockaddr_in 변수를 만들고 (struct sockaddr*)로 캐스팅하여 사용함
  • addrlen: 구조체의 크기를 나타내는 변수 주소, sizeof 연산자 사용

 

 

사용 예시.

struct sockaddr_in serverAddr;
socklen_t addrLen = sizeof(serverAddr);

// 연결된 원격 호스트 정보 얻기
if (getpeername(sockfd, (struct sockaddr*)&serverAddr, &addrLen) == -1) {
    perror("getpeername");
    close(sockfd);
    exit(EXIT_FAILURE);
}

printf("Remote IP Address: %s\n", inet_ntoa(serverAddr.sin_addr));
printf("Remote Port: %d\n", ntohs(serverAddr.sin_port));