gpt4 book ai didi

c - 客户端异常终止如何通知服务器?

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:57 25 4
gpt4 key购买 nike

正如标题所说,我正在寻找一种方法,以便在客户端异常关闭 session 时得到通知。

我使用的是 freeBSD 操作系统。服务器正在运行 Xamount 线程(取决于 CPUcore 数量)。所以我没有 fork ,每个客户端都没有自己的进程。

这就是为什么一直发送一个 deathpackage time_t 秒来接收 SIGPIPE 对我来说不是一个选项。但是我需要从 kqueue 中删除剩余的客户端,否则在太多的 accept() 之后我的代码显然会遇到内存问题。

有没有一种方法,我可以在没有高性能松动的情况下检查每个客户端,它们是否已连接?

或者发生这种情况时会触发的任何事件通知?或者有没有办法让程序在客户端进程退出之前向端口发送任何信号,即使在异常终止的情况下也是如此?

最佳答案

编辑:该答案遗漏了问题,因为它与使用 kqueue 无关。但是,如果其他人通过标题找到了问题,无论如何它可能会有帮助......

我经常看到以下行为:如果客户端死机,并且服务器在客户端的套接字描述符上执行 select()select() 返回返回码 > 0 和 FD_ISSET( fd ) 将对该描述符为真。但是当您现在尝试从套接字读取时,read()(或recv())返回错误。

对于使用它来检测客户端死亡的“正常”连接,我们可以很好地工作,但是当套接字连接被隧道化时,似乎会有不同的行为,但我们还没有设法完全弄清楚。

关于c - 客户端异常终止如何通知服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18145109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com