2014-02-25 3 views
0

소켓과 함께 작동하는 프로그램이 있습니다. 클라이언트 측에서 getaddrinfo를 통해 필요한 정보를 얻은 다음 결과가 연결 함수에 전달됩니다. 것은 다른 환경에서 다르게 작동합니다. 일부 envs addrinfo 구조를 얻은 후 함수에 연결할 때 잘못된 인수 오류가 발생합니다. 내가 놓친 게 있니? 제발 도와 줘. 나는 이런 식으로 사용하고 있습니다 :Getaddrinfo 다른 동작

getaddrinfo(host, NULL, NULL, &Result); 

나에게 어떤 결과를 가져 오지 않았다 세트 소켓 유형 및 소켓 가족과 함께 힌트 인수를 전달.

미리 감사드립니다.

+1

무엇이 잘못되었는지를 효과적으로 추측 할 수있는 세부 정보가 충분하지 않습니다. 가장 현명한 일은 실패 사례의 '결과'내용을 기록하고 성공 사례와 비교하는 것입니다. 여러 개의 주소가 반환됩니까? 하나는 IPv6 일 수 있으며, 이는 연결 호출에 대해 작동하지 않을 수 있습니다. – Petesh

답변

1

확인할 코드가 없기 때문에 짐작할 수 있습니다. 소켓 (AF_INET 또는 AF_INET6)의 도메인이 addrinfo 구조의 ai_family 도메인과 일치하는지 확인하십시오. 더 나은 방법은 getaddrinfo 호출 후에 소켓을 만들고 ai_family를 소켓 도메인으로 사용하는 것입니다.