C 正在检查服务器进程是否正在侦听域套接字
我正在编写客户机-服务器程序,它使用unix域套接字在双方之间进行通信。 要求是:C 正在检查服务器进程是否正在侦听域套接字,c,linux,sockets,unix,client-server,C,Linux,Sockets,Unix,Client Server,我正在编写客户机-服务器程序,它使用unix域套接字在双方之间进行通信。 要求是: 服务器在给定地址上打开一个抽象套接字,然后监听该套接字。通过某些触发器,服务器可以停止侦听该消息 客户端必须监视服务器是否正在侦听给定的地址路径 若服务器正在套接字上侦听,则向服务器发送一个注册请求 如果服务器关闭套接字,则执行一些清理操作 要检查服务器是否正在侦听,我的解决方案是: 定期创建套接字并连接到服务器地址路径,如果成功,则表示服务器正在侦听,反之亦然 但是,如果检查间隔太短,解决方案似乎会消耗cp
- 若服务器正在套接字上侦听,则向服务器发送一个注册请求
- 如果服务器关闭套接字,则执行一些清理操作
非常感谢,您使用的时间间隔是多少?您描述的检查(通常)只需要一小段时间,如果延迟适当,不会导致大量CPU占用?要求是什么(检测服务器的启动/关闭)?间隔取决于服务器的启动/关闭速度。在我的例子中,它需要5毫秒,我可以看到,在空闲状态下,客户端不断检查服务器状态,然后它总是保持在任务管理器的顶部。有时是1%的CPU时间。您总是可以增加客户端延迟,并减少CPU。对于检测到服务器停机的情况,您可以保持连接打开,并进行读取。当服务器关闭连接时,它将失败,没有CPU负载。我已经尝试过间隔为1秒的case,但是case服务器的升降速度非常快,它将无法看到更改。我可以提供一些解决方法来解决这个问题,但我仍然希望有一个更好的方法来解决这个问题。如果您可以保持客户端连接打开,并等待读取失败,那么无论何时启动,您都可以立即检测到服务器正在关闭。