c - 使用带套接字的 C 中的 I/O 从服务器接收响应

标签 c sockets get fgets recv

我正在尝试使用套接字制作一个简单的 Web 客户端。我向网页发送 GET 请求并希望接收 HTML 文件。我知道我可以使用 recv() 接收,但我想使用 FILE 来接收。我正在使用 fdopen 将套接字包装在 FILE 中。现在我可以使用 fgetc() 来读取响应。但是,fgets() 失败了——也许我用错了。有什么方法可以轻松地逐行读取 HTTP 响应?

这个有效:

FILE *input = fdopen(mySocket, "r");

while(!feof(input))
{
   printf("%c", fgetc(input));
}

我需要这样的东西:

FILE *input = fdopen(mySocket, "r");
char c[2000];
while(fgets(c, sizeof(c), input) != NULL)
{
   printf("%s\n", c);
}

如果还有其他方便的阅读回复方式,请指教。

最佳答案

我刚刚添加了错误检查,现在可以使用了。输入确实是 NULL,因为我的请求从未通过。谢谢!

FILE *input= fdopen(mySocket, "r");
if(input== NULL)
{
printf("Error");
    exit 1;
}

char c[2000];
while(fgets(c, sizeof(c), input) != NULL)
{
    printf("%s\n", c);
}

关于c - 使用带套接字的 C 中的 I/O 从服务器接收响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15882550/

相关文章:

c++ - 匿名 union 类型的用例是什么

C# - 已建立的连接被主机错误中的软件中止

perl - 为什么 Nginx 不能 POST 到我的 Perl 后端?

java - 在Linux终端中执行java文件

c++ - 使用 C++ 提交表单的 Http GET 请求

c - C语言中如何给字符串赋值

c - 使用管道时出现错误,我的管道未声明

c - 生命游戏,C 检查生活条件

JAVA:为什么我的主机和帖子在其他类中返回 null

java - 如何将对象数组列表写入和检索到文件?