c getaddrinfo 不知道这样的主机
c getaddrinfo no such host is known
我正在尝试通过为它提供 http(s) 前缀来使用 getaddrinfo,但它没有正确查找主机。我该如何解决这个问题。我想查找 https://www.google.com 但 gai_strerror()
returns "No such host is known",它在端口 80 上对 www.google.com 工作正常。
这是我用于 getaddrinfo() 部分的代码的一部分:
// The GET request I pose to download the webpage
char *send_buf="GET / \r\n";
// i tried three different urls apparently changing the value in the
// value in the variable in my code, it only works for 'www.google.com'
const char *URL="https://www.google.com";
const char *URL="http://www.google.com";
const char *URL="www.google.com";
if( ( status=getaddrinfo(URL, PORT, &hints, &res) )!=0 )
{
printf("%s\n", gai_strerror(status));
exit(1);
}
我正在尝试使用 winsock2 下载网页,当我使用 www.google.com 时,它给了我一条 302 Moved 消息,我想在不使用任何外部库的情况下下载实际网页。
您必须提供所需主机的 IP 地址或主机名。如果您提供主机名,那么它将被转换为其各自的 IP 地址。主机名只能采用这种形式:
"www.example.domain_name"
。不要包括 "http://"
或 "https://"
。
这是包含主机名的 URL 的 属性,它不是主机名本身的一部分。
要为 https://www.google.com
下载 HTML,您必须查找 www.google.com
的 IP,然后在端口 443(默认 HTTPS 端口)上连接到该 IP,然后协商SSL/TLS 加密会话,然后最后发送对 /
文档的 HTTP GET
请求。
手动实现 SSL/TLS 加密是不明智的。在现有套接字代码之上使用一个库,例如 OpenSSL 或 Microsoft 自己的 CryptoAPI。或者,根本不要直接使用套接字 APIs,使用 HTTP/S 库,例如微软自己的 WinInet/WinHTTP API,或者像 libcurl 这样的库,来处理所有为您提供详细信息。
我正在尝试通过为它提供 http(s) 前缀来使用 getaddrinfo,但它没有正确查找主机。我该如何解决这个问题。我想查找 https://www.google.com 但 gai_strerror()
returns "No such host is known",它在端口 80 上对 www.google.com 工作正常。
这是我用于 getaddrinfo() 部分的代码的一部分:
// The GET request I pose to download the webpage
char *send_buf="GET / \r\n";
// i tried three different urls apparently changing the value in the
// value in the variable in my code, it only works for 'www.google.com'
const char *URL="https://www.google.com";
const char *URL="http://www.google.com";
const char *URL="www.google.com";
if( ( status=getaddrinfo(URL, PORT, &hints, &res) )!=0 )
{
printf("%s\n", gai_strerror(status));
exit(1);
}
我正在尝试使用 winsock2 下载网页,当我使用 www.google.com 时,它给了我一条 302 Moved 消息,我想在不使用任何外部库的情况下下载实际网页。
您必须提供所需主机的 IP 地址或主机名。如果您提供主机名,那么它将被转换为其各自的 IP 地址。主机名只能采用这种形式:
"www.example.domain_name"
。不要包括 "http://"
或 "https://"
。
这是包含主机名的 URL 的 属性,它不是主机名本身的一部分。
要为 https://www.google.com
下载 HTML,您必须查找 www.google.com
的 IP,然后在端口 443(默认 HTTPS 端口)上连接到该 IP,然后协商SSL/TLS 加密会话,然后最后发送对 /
文档的 HTTP GET
请求。
手动实现 SSL/TLS 加密是不明智的。在现有套接字代码之上使用一个库,例如 OpenSSL 或 Microsoft 自己的 CryptoAPI。或者,根本不要直接使用套接字 APIs,使用 HTTP/S 库,例如微软自己的 WinInet/WinHTTP API,或者像 libcurl 这样的库,来处理所有为您提供详细信息。