我正在使用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
?
答案 0 :(得分:3)
如果套接字关闭,您只会在套接字上接收和结束文件。
如果您需要在保持套接字打开的同时停止阅读,则需要为此定义协议。