局域网通过代理服务器上网,使用Winsock下载文件的两个问题。
问题一:
PHOSTENT hostinfo;
if((hostinfo = gethostbyname(“www.baidu.com") == NULL)
{
return FALSE;
}
通过主机名得不到主机信息,但设置dns服务器为代理服务器的IP则可以。如果不设置DNS(即自动获取DNS),怎么得到主机信息?
问题二:
设置了dns服务器为代理服务器的IP,可以得到主机信息,但连接总是出现超时错误。
char * pszIP = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
// 创建套接字
m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (m_socket == INVALID_SOCKET)
{
return FALSE;
}
SOCKADDR_IN addr;
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = inet_addr(pszIP);
addr.sin_port = htons(80);
// 连接服务器
m_nError = connect(m_socket, (SOCKADDR*)&addr, sizeof(SOCKADDR ));
if (m_nError == SOCKET_ERROR)
{
int iRet = ::GetLastError(); // 出现10060错误,超时
closesocket(m_socket);
return FALSE;
}