Visual Studio C ++ 2008
我正在使用此代码。但是,gethostbyname始终返回错误。一切看起来都不错,所以我不明白为什么我会收到这个错误。
这是我用来获取gethostbyname的代码。
任何人都认为我可能做错了吗?
int32_t sockfd;
/* struct definition */
struct sockaddr_in conn_addr;
/* gethostbyname for the function and struct definition */
struct hostent *server_hostname;
/* set address to connect to the local loopback */
char buffer[BUF_SIZE] = "127.0.0.1";
char data[BUF_SIZE] = {0};
/* getting hostname for the ip address stored in the buffer */
if((server_hostname = gethostbyname(buffer)) == NULL)
{
/* gethostbyname uses a special h_errno for error number */
fprintf(stderr, "gethostbyname [ %s ] [ %s ] [ %d ]\n", strerror(h_errno), __FUNCTION__, __LINE__);
return CS_FAILURE;
}
返回的错误是“未知错误”,这无济于事。
非常感谢任何建议,
答案 0 :(得分:3)
您应该能够使用WSAGetLastError获得“真正的”错误。
BTW,我假设您在调用gethostbyname之前调用了WSAStartup来初始化套接字子系统?
答案 1 :(得分:3)
您需要添加WSAStartup;
WSADATA wsaData;
struct hostent *remoteHost;
char *host_name = "127.0.0.1";
WSAStartup(MAKEWORD(2, 2), &wsaData);
remoteHost = gethostbyname(host_name);