我正在实现一个多线程聊天服务器只是为了学习。我正在通过 netcat 连接客户端。我需要将客户端收到的消息广播给其他连接的客户端。那部分已经完成了。我陷入困境的是,我需要查找客户端是否发送了 EOF,然后从我的数据结构中删除该特定客户端并释放资源。我如何捕获从客户端发送的 EOF?
加上 EOF 意味着 ctrl+D 对吗?
我已经编写了以下代码段来做到这一点。但它不起作用。我哪里出错了。没有 if 段一切正常,除了删除一个客户端。使用 if 段似乎没有任何工作。
char buffer[MAXMSG];
while (!quit)
{
read(connfd,buffer,MAXMSG);//read a message from this client
if(bufffer==EOF){
break;
}
broadcast_msg(buffer);
//if EOF quit, otherwise broadcast it using broadcast_msg()
}
perror("Client disconnected");
close(clients[(int)arg]->sd);
free(clients[(int)arg]);
checkemptyarray[(int)arg]=0;
return NULL;