2017-04-01 45 views
0

注意:我不太了解C++。 我使用的网站托管(000webhost.com),我有一个PHP脚本旨在接收数据,在发布请求。我目前使用的代码获取000webhost的HOST,这不是我想要的,我想使用url(SomeName.000webhostapp.com),但它重定向到主机。 这里是代码:如何在特定网址上打开套接字?

SOCKET Socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
SOCKADDR_IN SockAddr; 
SockAddr.sin_port = htons(80); 
SockAddr.sin_family = AF_INET; 
SockAddr.sin_addr.s_addr = *((unsigned long*)gethostbyname("SomeName.000webhost.com")->h_addr); 

谢谢你提供的任何帮助。

+1

如果你连接到一个'php'脚本,那么它最有可能在HTTP服务器后面,所以你需要谈谈'HTTP'协议。套接字不关心它只处理连接到* host *的URL。在套接字连接后,其余的'URL'作为'HTTP'协议的一部分提供。 – Galik

+0

我知道,但它是**之前的网址。我将如何做到这一点? – Internal

回答

3

套接字不连接到URL,它们连接到主机和端口。 URL的其余部分(即路径部分)是您在连接后通过HTTP请求发送套接字的内容。

听起来好像你在说你想查找“SomeName.000webhostapp.com”,但是你得到的是“000webhost.com”的IP地址。这并不奇怪。您的提供商很可能使用name-based virtual hosting,其中所有子域实际上由单个IP地址上的单个服务器处理。

当您发送HTTP请求时,您需要包含Host: SomeName.000webhostapp.com标头,正如HTTP 1.1协议所要求的。基于该标题,服务器知道要响应哪个站点。