0

我正在循环使用 TCP 套接字输入的每一行,fdopen如下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 回答