我要结束一个用C编写的学术项目:该项目包含在使用AF_UNIX套接字的多线程聊天服务器中,因此客户端和服务器都在同一台计算机上运行。
总而言之,程序运行一个主线程,在该主线程中进行初始化(结构,数据等),并为客户请求提供服务的线程池。
当客户端等待消息列表的最后一个(带有read()调用)时出现问题,并且在客户端仍在等待时,我向服务器发出终止信号(请澄清一下,这是不是正常的事件顺序,而是可能由于某种原因而发生),这时服务器完成了应该执行的所有关闭过程,然后正确完成了该过程。
我对客户端的怀疑是因为,当服务器关闭之前它们通信的套接字的文件描述符时,它无休止地开始接收它接收到的倒数第二条消息,但是我不知道为什么。
我写了一些对回答有用的细节: -服务器(在主线程中)使用epoll功能来检测新连接和新请求 -所有消息交换发生在线程中 -通信通过readv和writev发生
我希望我已经足够清楚,我将作进一步的澄清答复。
谢谢大家