
socket_getsockname 함수는 socket programming에서 소켓의 주소 정보를 가져올 때 사용하는 함수입니다. 이 함수는 소켓의 주소 정보를 구조체인 struct sockaddr_in에 저장합니다.
struct sockaddr_in은 소켓의 주소 정보를 저장하는 구조체로, 다음과 같은 멤버 변수를 가지고 있습니다.
- sin_family: 주소 체계 (AF_INET, AF_INET6 등)
- sin_port: 포트 번호
- sin_addr: 주소 (IPv4 주소인 경우, 구조체 in_addr를 사용)
이러한 구조체를 사용하여 소켓의 주소 정보를 가져올 수 있습니다.
다음은 예제 코드입니다.
#hostingforum.kr
c
#include
#include
#include
#include
#include
int main() {
int server_socket;
struct sockaddr_in server_addr;
// 서버 소켓 생성
server_socket = socket(AF_INET, SOCK_STREAM, 0);
if (server_socket < 0) {
perror("socket() error");
return -1;
}
// 서버 주소 설정
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8080);
inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr);
// 소켓 주소 바인딩
if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
perror("bind() error");
return -1;
}
// 소켓 주소 정보 가져오기
socklen_t len = sizeof(server_addr);
if (getsockname(server_socket, (struct sockaddr *)&server_addr, &len) < 0) {
perror("getsockname() error");
return -1;
}
// 소켓 주소 정보 출력
printf("소켓 주소 정보: %s:%dn", inet_ntoa(server_addr.sin_addr), ntohs(server_addr.sin_port));
return 0;
}
위 코드에서 socket_getsockname 함수를 사용하여 소켓의 주소 정보를 가져올 때, 그 값을 사용하는 방법은 다음과 같습니다.
1. 소켓 주소 정보를 가져올 때, socklen_t 타입의 변수 len을 사용하여 구조체의 크기를 저장합니다.
2. getsockname 함수를 사용하여 소켓 주소 정보를 가져옵니다.
3. 가져온 소켓 주소 정보를 사용하여 printf 함수를 사용하여 출력합니다.
이러한 방법으로 소켓 주소 정보를 가져올 수 있습니다.
2025-05-21 15:01