我正在尝试使用套接字获取一个小型 JSON 测试文件,该文件托管在我的网站 ( http://a-cstudios.com/text.json ) 上。当我这样做时
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:连接被对等方重置
。但如果我使用相同的代码,其中 restOfURL
是 /index.html
, baseServer
是 www.google.com
>,这工作正常,并且 buf
将包含 index.html
的文本。为什么这对我网站上的文件不起作用?
最佳答案
由于您没有发布完整的代码,我将尝试一下并做出假设:
您使用 restOfURL
和 baseServer 填充
"GET %s\r\nHOST:%s\r\n\r\n"
的格式字符串
但是,在 sprintf
调用过程中,restOfURL 并未初始化,因此您将垃圾数据推送到第一个 %s
发布更多代码或确保初始化 resOfURL
关于C 套接字接收 : connection reset by peer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17886321/