我正在使用 fdopen
和 fgets
遍历 TCP 套接字输入的每一行,如下所示:
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
吗?
最佳答案
如果套接字关闭,您只会在套接字上接收和结束文件。
如果您需要在保持套接字打开的同时停止读取,则需要为此定义一个协议(protocol)。
关于c - 在 fgets While 循环中检测 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443122/