C++ 如何通过套接字连接到托管网站的网站?

C++ 如何通过套接字连接到托管网站的网站?,c++,sockets,C++,Sockets,我正在尝试连接到我的网站,虽然我看到套接字只能连接到IPv4和IPv6,但当我使用tracert(mywebsite.000webhostapp.com)时,它会获得000webhostapp.com的域,而不是我网站的IPv4。我正在这样做: SockAddr.sin\u addr.s\u addr=inet\u addr(“MyWebsite.000webhostapp.com”) 但我只能连接到IPv4。如何连接到主机名(就像我现在做的那样)? 感谢您提供的帮助。inet\u addr()

我正在尝试连接到我的网站,虽然我看到套接字只能连接到IPv4和IPv6,但当我使用tracert(mywebsite.000webhostapp.com)时,它会获得000webhostapp.com的域,而不是我网站的IPv4。我正在这样做:

SockAddr.sin\u addr.s\u addr=inet\u addr(“MyWebsite.000webhostapp.com”)

但我只能连接到IPv4。如何连接到主机名(就像我现在做的那样)? 感谢您提供的帮助。

inet\u addr()
仅解析IP地址。将查找DNS记录(IPv4(A)和IPv6(AAAA)记录,具体取决于您传入的提示)。

如果mywebsite.000webhostapp.com与000webhostapp.com具有相同的IP,则表示您的网站与您的Web主机位于同一服务器上。您的网站没有专用服务器

因此,如果您不想使用复杂的c代码解析DNS名称,您可以直接与其IP连接(顺便说一句,使用
ping
解析DNS名称通常比使用
tracert
更快)

然后,您的网络主机将使用virtualhost来了解访问哪个网站。它使用HTTP请求中的
Host
字段来确定需要哪个网站。例如,您的HTTP请求可以这样开始:

   GET /index.html HTTP/1.1
   Host: mywebsite.000webhostapp.com

您可以在此处查看有关虚拟主机的更多信息:

没有直接的方法

inet\u addr()
函数将Internet主机地址从IPv4数字和点符号转换为网络字节顺序的二进制数据。(来自文件)

但你可以用另一种方式

首先从URL获取ip地址

首先从
gethostbyname
获取
hostent
结构:

struct hostent *hEnt;
hEnt = gethostbyname("MyWebsite.000webhostapp.com");
hostent
h\u addr\u list
是指向 主机IP地址

从上述阵列获取ip地址并使用它

下面的链接有一个例子。 搜索
gethostbyname


我已尝试添加此标头,但在使用您喜爱的工具(如ping)解析000webhost.app.com的DNS后,我将如何将套接字连接到该IP?请注意,
gethostbyname()
已被弃用。它不是可重入的(至少在其他操作系统上是如此;Windows使用线程本地存储)。