C 套接字接收 : connection reset by peer

标签 c sockets

我正在尝试使用套接字获取一个小型 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.htmlbaseServerwww.google.com >,这工作正常,并且 buf 将包含 index.html 的文本。为什么这对我网站上的文件不起作用?

最佳答案

由于您没有发布完整的代码,我将尝试一下并做出假设:

您使用 restOfURLbaseServer 填充 "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/

相关文章:

c++ - llvm::CloneBasicBlock 示例

c++ - 在 CMake 中调试与发布

c - 在 C 中执行冒泡排序的函数提供不稳定的结果

c - RAW-Sockets 应该忽略 MTU

python - Django - 如何限制哪些用户可以连接到套接字?

python发送csv数据到spark streaming

c - 保持微 Controller 外设驱动独立

Java Socket 数据包读取重叠

java - decode() 没有读取任何内容,但解码了一条消息

c - TCP Socket多路复用发送大数据