2013-04-08 93 views
2

我想使用套接字製作一個簡單的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

回答

0

我剛添加錯誤檢查,它現在可以工作。輸入確實是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); 
} 
相關問題