2017-04-01 44 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協議所要求的。基於該標題,服務器知道要響應哪個站點。