【发布时间】:2013-04-08 15:03:59
【问题描述】:
我正在尝试使用套接字制作一个简单的 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);
}
如果有其他方便的方式阅读回复,请指教。
【问题讨论】:
-
逐行阅读不包含换行符的响应对我来说似乎很困难,并不是说不可能。
-
其实我认为响应确实有换行符。但由于某种原因,我无法让 fgets 正确阅读。
-
您遇到什么错误?提示:
#include <errno.h>perror("fgets:"); -
你确定
input != NULL? -
在调用任何打开的函数后始终检查错误(
perror是您快速报告控制台错误的朋友)。