gpt4 book ai didi

C++ 如何从 Http GET 数据包中获取主机名

转载 作者:行者123 更新时间:2023-11-28 08:14:09 31 4
gpt4 key购买 nike

我想使用从如下所示的数据包中获取的信息创建到 Web 服务器的 tcp 连接。为此,我需要数据包中的主机名和端口号来获取可用于连接功能的地址

假设我使用的是 C++我可以假设与服务器通信以请求 html 页面的端口号是 80 吗?假设数据包是 char 数组的形式,如何从数据包中获取主机名?我目前提取字符串 bits.wikimedia.org 并将其用作主机名。那是对的吗?获得主机名后,我假设我将其传递给 getaddrinfo 并使用我与此函数一起传递的结构来生成包含连接函数可以理解的信息的结构。这个假设是否正确?

GET http://bits.wikimedia.org/en.wikipedia.org/load.php?debug=false&lang=en&modules=site&only=scripts&skin=vector&* HTTP/1.1
Host: bits.wikimedia.org
Proxy-Connection: close
User-Agent: Mozilla/5.0 (compatible; Konqueror/4.6; Linux) KHTML/4.6.5 (like Gecko) Fedora/4.6.5-7.fc15
Referer: http://en.wikipedia.org/wiki/Firewall_(computing)
Accept: */*
Accept-Encoding: x-gzip, x-deflate, gzip, deflate
Accept-Charset: utf-8, utf-8;q=0.5, *;q=0.5
Accept-Language: en-US,en;q=0.9

最佳答案

如果您正在获取包含字符串/字符数组的离线 http 数据包,那么您需要完全依赖字符串中的 URL。 HTTP URL 以 http://hostname[:port]/resource... 格式指定,其中端口号是可选的,如果未指定,则默认为 http 端口 80。您需要解析 URL 以提取主机名和端口号 [如果未明确指定,则假定端口为 80] 并尝试套接字连接。您需要设置 DNS 并可从您的程序访问,以便将主机名解析为其 IP 地址。否则您将无法建立连接。

关于C++ 如何从 Http GET 数据包中获取主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8191784/

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