使用gethostbyname_r。您傳遞主機名稱並返回地址結構。看起來像MT的環境中,這個版本是我的崩潰使應用程序試圖與gethostbyname_r來取代它。谷歌很難找到一個示例用法或任何好的文檔。如何在Linux
有沒有人用這個gethostbyname_r方法?有任何想法嗎 ?如何使用它以及如何處理它的錯誤情況(如果有的話)。
使用gethostbyname_r。您傳遞主機名稱並返回地址結構。看起來像MT的環境中,這個版本是我的崩潰使應用程序試圖與gethostbyname_r來取代它。谷歌很難找到一個示例用法或任何好的文檔。如何在Linux
有沒有人用這個gethostbyname_r方法?有任何想法嗎 ?如何使用它以及如何處理它的錯誤情況(如果有的話)。
的功能是利用由調用者提供的臨時緩衝器。訣竅是處理ERANGE
錯誤。
int rc, err;
char *str_host;
struct hostent hbuf;
struct hostent *result;
while ((rc = gethostbyname_r(str_host, &hbuf, buf, len, &result, &err)) == ERANGE) {
/* expand buf */
len *= 2;
void *tmp = realloc(buf, buflen);
if (NULL == tmp) {
free(buf);
perror("realloc");
}else{
buf = tmp;
}
}
if (0 != rc || NULL == result) {
perror("gethostbyname");
}
編輯
在最近的評論光我猜你真正想要的是getaddrinfo
。
找到一個博客這個,但代碼是行不通的。 http://dimitry-i.blogspot.com/2010/09/how-to-use-gethostbynamer-correct.html – harry