0
首先,我的代碼示例:如何處理inet_ntop()失敗?
cout << "bla1" << endl;
struct addrinfo hints, *info;
int status;
memset(&hints, 0, sizeof hints);
char ip4[INET_ADDRSTRLEN];
char ip6[INET6_ADDRSTRLEN];
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
cout << "bla2" << endl;
status = getaddrinfo(url.c_str(), NULL, &hints, &info);
cout << "bla3" << endl;
if(!inet_ntop(AF_INET, &((const sockaddr_in *)info->ai_addr)->sin_addr , ip4, INET_ADDRSTRLEN)) {
return ERROR_PAR;
}
cout << "bla4" << endl;
url變量包含要解決ADRESS(我的工作簡單的客戶端/服務器的DNS解析器)。如果可以解決,一切正常,但是當URL不能得到解決,我的產量只有
BLA1 bla2 bla3
上面的代碼是派生的子所以它不會停止整個腳本,它只是回到父進程,沒有錯誤(我正在測試返回值,在這種情況下它應該是ERROR_PAR = 1,所以應該出現錯誤信息)。
有什麼錯我使用這些功能或問題一定是別的地方的方式?
編輯:之前的任何其他功能來檢查的getaddrinfo返回值是非常重要的。所以問題解決了。
你檢查'errno'當函數失敗?它應該給你一個錯誤代碼,告訴你爲什麼失敗。 – 2012-03-07 14:34:10
另外,你確定'getaddrinfo'返回的第一個地址是IPv4地址嗎? – 2012-03-07 14:35:35
哦,我怎麼能忘記檢查getaddrinfo的返回值?我試圖在這裏解決它的錯誤方式。謝謝,問題已經解決了! – milano 2012-03-07 14:40:35