使用套接字在C中使用I/O从服务器接收响应
问题描述:
我想使用套接字制作一个简单的Web客户端。我向网页发送GET请求并希望收到一个HTML文件。我知道我可以使用recv()
来接收,但我想用FILE
来做到这一点。我使用fdopen
将套接字包装在FILE
中。现在我可以使用fgetc()
来读取响应。但是,fgets()
失败 - 也许我错了。任何方式轻松地逐行阅读HTTP响应?使用套接字在C中使用I/O从服务器接收响应
这工作:
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);
}
读这还不包括由线换行字符线的响应似乎很难对我来说,没有定义说不可能。 – alk 2013-04-08 15:21:34
其实我觉得应答确实有新的换行符。但由于某种原因,我无法让fgets正确读取它。 – ask 2013-04-08 15:26:06
你有什么错误?提示:'#include''perror(“fgets:”);' –
cdarke
2013-04-08 15:30:44