프로그래밍/C
윈도우 소켓 ] 소켓과 연결된 원격 호스트의 IP주소와 Port번호 가져오기, getpeername()
eteo
2023. 10. 28. 22:19
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));