使用套接字在C中使用I/O从服务器接收响应

使用套接字在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); 
} 

如果读取响应任何其他方便的方式,请告知。

+0

读这还不包括由线换行字符线的响应似乎很难对我来说,没有定义说不可能。 – alk 2013-04-08 15:21:34

+0

其实我觉得应答确实有新的换行符。但由于某种原因,我无法让fgets正确读取它。 – ask 2013-04-08 15:26:06

+4

你有什么错误?提示:'#include ''perror(“fgets:”);' – cdarke 2013-04-08 15:30:44

我刚添加错误检查,它现在可以工作。输入确实是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); 
}