我想使用套接字來獲取一個小的JSON測試文件,這是我的網站(http://a-cstudios.com/text.json)託管。當我這樣做C套接字recv:連接重置由對方
long numbytes;
char *request = malloc(sizeof(char) * 300);
sprintf(request, "GET %s \r\nHOST:%s \r\n\r\n", restOfURL, baseServer);
// restOfURL = "/text.json" baseServer = "www.a-cstudios.com"
send(sockfd, request, strlen(request) + 1, 0);
char buf[1024];
if ((numbytes = recv(sockfd, buf, 1024-1, 0)) == -1) {
perror("recv");
}
我得到recv: connection reset by peer
。但是,如果我使用相同的代碼,其中restOfURL
是/index.html
和baseServer
是www.google.com
,此工作正常,buf
將包含文本index.html
。爲什麼這不適用於我網站上的文件?
GET-request在最後還需要'HTTP/1.1'(或'1.0')嗎? – Kninnug
您發送的HTTP無效,主機正在關閉連接。你把HTTP/1.1放在正確的地方了嗎?爲什麼使用malloc()而不是在堆棧上分配數組? – EJP
@EJP和Kninnug謝謝你指出,這確實解決了這個問題。如果你們其中一人發帖作爲答案,我會接受它。 –