
socket_addrinfo 구조는 소켓 주소 정보를 저장하는 구조체입니다. 이 구조체는 소켓 주소 정보를 저장하는 구조체입니다. 소켓 주소 정보는 소켓 주소의 종류를 나타내는 ai_family, 소켓 주소의 포트 번호를 나타내는 ai_port, 소켓 주소의 호스트 이름을 나타내는 ai_canonname, 소켓 주소의 주소를 나타내는 ai_addr, 소켓 주소의 주소 길이를 나타내는 ai_addrlen 등이 있습니다.
socket_addrinfo 구조를 사용하는 예제는 다음과 같습니다.
#hostingforum.kr
c
#include
#include
#include
#include
int main() {
int sockfd;
struct addrinfo *res;
struct addrinfo hints;
// 소켓 주소 정보를 저장할 구조체를 초기화합니다.
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_INET; // IPv4 주소
hints.ai_socktype = SOCK_STREAM; // TCP 소켓
// 소켓 주소 정보를 가져옵니다.
if (getaddrinfo("127.0.0.1", "8080", &hints, &res) != 0) {
perror("getaddrinfo");
return 1;
}
// 소켓을 생성합니다.
sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
if (sockfd < 0) {
perror("socket");
return 1;
}
// 소켓 주소 정보를 설정합니다.
if (connect(sockfd, res->ai_addr, res->ai_addrlen) < 0) {
perror("connect");
return 1;
}
// 소켓 주소 정보를 출력합니다.
printf("Socket Address Info:n");
printf(" ai_family: %dn", res->ai_family);
printf(" ai_socktype: %dn", res->ai_socktype);
printf(" ai_protocol: %dn", res->ai_protocol);
printf(" ai_canonname: %sn", res->ai_canonname);
printf(" ai_addr: %sn", inet_ntoa(((struct sockaddr_in *)res->ai_addr)->sin_addr));
printf(" ai_addrlen: %dn", res->ai_addrlen);
// 소켓 주소 정보를 해제합니다.
freeaddrinfo(res);
return 0;
}
이 예제에서는 소켓 주소 정보를 가져오고, 소켓 주소 정보를 설정하고, 소켓 주소 정보를 출력하는 예제를 제공합니다.
2025-04-09 12:52