2014-02-25 46 views
0

我有一個程序,它適用於套接字。在客戶端,我通過getaddrinfo獲得必要的信息,然後將結果傳遞給connect函數。事情是,它在不同的環境中有不同的作用。在獲得addrinfo結構並將其傳遞給連接函數後的某些envs中,我得到無效的參數錯誤。我錯過了什麼嗎?請幫助我。 我使用它是這樣的:Getaddrinfo不同的行爲

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

傳遞與組插座類型和插座家庭提示說法並沒有給我帶來任何結果。

提前致謝。

+1

真的沒有足夠的細節來有效地猜測出現了什麼問題;但最明智的做法是在失敗案例中記錄「Result」內容並將其與成功案例進行比較。你收到多個地址嗎?其中一種可能是IPv6,這可能無法用於連接呼叫 – Petesh

回答

1

只是猜測,因爲沒有代碼可以檢查: 請確保套接字(AF_INET或AF_INET6)的域與addrinfo結構中的ai_family的域匹配。更好的是,在getaddrinfo調用之後創建套接字並使用ai_family作爲套接字域。