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