winsock gethostbyname失败

时间:2010-03-07 09:18:35

标签: visual-studio-2008 sockets

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;
}

返回的错误是“未知错误”,这无济于事。

非常感谢任何建议,

2 个答案:

答案 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);