getaddrinfo가 IPv4를 사용하도록 강제

getaddrinfo가 IPv4를 사용하도록 강제

매뉴얼 페이지에는 다음과 같이 나와 있습니다.

getaddrinfo(3) 함수는 IPv4 소켓 주소 구조 생성에만 국한되지 않습니다. IPv6 지원이 가능하다면 IPv6 소켓 주소 구조를 생성할 수 있습니다. 이러한 소켓 주소 구조는 클라이언트 또는 서버 소켓을 준비하기 위해 바인드(2) 또는 connect(2)에서 직접 사용할 수 있습니다.

getaddrinfo억지로 하려면 어떻게 해야 할까요?아니요IPv6 소켓 주소 구조를 만드시겠습니까?

답변1

재미있게,내가 물어본 첫 번째 질문은이 웹사이트에는 귀하에게 유용할 수 있는 답변이 있습니다.

요약하자면, /etc/gai.confgetaddrinfo() 시스템 호출은 이 파일을 사용하여 응답 방법을 결정합니다. 특정 사례의 경우 다음을 추가하십시오.

precedence ::ffff:0:0/96  100

구성 파일의 끝까지 도달하는 데 충분해야 합니다.

답변2

맨페이지에 따르면 getaddrinfo()매개변수에 주소 계열을 전달할 수 있으므로 hints다음과 같습니다.

struct addrinfo 프롬프트, *result;
정수;

memset(&힌트, 0, sizeof(힌트));
Tip.ai_family = AF_INET; /* 또는 ipv6 주소의 경우 AF_INET6*/
s = getaddrinfo(NULL, "ftp", &hints, &result);
...

나는 그것을 시도하지 않았지만 이 접근 방식이 올바른 것 같습니다.

관련 정보