2

ソケットを使用して単純な Web クライアントを作成しようとしています。Web ページに GET リクエストを送信し、HTML ファイルを受信したいと考えています。を使用して受信できることはわかっていますがrecv()、 を使用してこれを行いたいですFILEfdopenでソケットをラップするために使用していますFILEfgetc()これで、応答を読み取るために使用できます。ただし、fgets()失敗します-間違って使用している可能性があります。HTTP 応答を 1 行ずつ簡単に読み取る方法はありますか?

これは機能します:

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);
}

他に回答を読むのに便利な方法があれば教えてください。

4

1 に答える 1

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);
}
于 2013-04-08T15:47:08.273 に答える