gpt4 book ai didi

c getaddrinfo 没有这样的主机是已知的

转载 作者:行者123 更新时间:2023-11-30 20:54:56 26 4
gpt4 key购买 nike

我尝试通过给 getaddrinfo 赋予 http(s) 前缀来使用它,但它无法正确查找主机。我该如何解决这个问题。我要查 https://www.google.comgai_strerror() 返回“No such host isknown”,对于端口 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 已移动消息,我想在不使用任何外部库的情况下下载实际网页。

最佳答案

您必须提供所需主机的 IP 地址或主机名。如果您给出主机名,那么它将被转换为其各自的 IP 地址。主机名只能采用以下形式:“www.example.domain_name”。请勿包含 "http://""https://"。这是包含主机名的 URL 的属性,它不是主机名本身的一部分。

要下载 https://www.google.com 的 HTML,您必须查找 www.google.com 的 IP,然后连接到该 IP在端口 443(默认 HTTPS 端口)上,然后协商 SSL/TLS 加密 session ,最后发送对 / 文档的 HTTP GET 请求。

手动实现 SSL/TLS 加密是不明智的。在现有套接字代码之上使用库,例如​​ OpenSSL 或 Microsoft 自己的 CryptoAPI。或者,根本不要直接使用套接字 API,而使用 HTTP/S 库(例如 Microsoft 自己的 WinInet/WinHTTP API)或像 libcurl 这样的库来为您处理所有细节。

关于c getaddrinfo 没有这样的主机是已知的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36237444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com