0

次のように使用fdopenして、TCPソケット入力の各行をループしています。fgets

int connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
FILE *f;
char line[1024];

f = fdopen(connfd, "a+");
while(fgets(line, sizeof(line), f) != NULL) {
    printf("%s", line);
}

printf("EOF");
fclose(f);

問題は、なんらかの奇妙な理由でfgets二度と戻らないように見えることです。NULL他に確認する方法はありますEOFか?

4

1 に答える 1

3

ソケットが閉じられた場合にのみ、ソケットでファイルの終わりを受け取ります。

ソケットを開いたまま読み取りを停止する必要がある場合は、そのためのプロトコルを定義する必要があります。

于 2012-11-18T18:27:05.090 に答える