gpt4 book ai didi

c++ - WINAPI RegisterApplicationRestart 不清除打开的套接字

转载 作者:可可西里 更新时间:2023-11-01 10:41:34 26 4
gpt4 key购买 nike

我有一个我正在制作的游戏的服务器,我使用

RegisterApplicationRestart(GetCommandLine(), 0); 

这样当服务器由于不可预见的原因崩溃时,它会自行重启。

但是,我对它如何处理我在应用程序上打开的监听器套接字有疑问。

服务器代码通过一组端口号并在第一个可用端口上打开一个监听器套接字。但是,当应用程序遇到 fatal error 并自行重启时,先前选择的端口上的监听器套接字不会关闭,因此每次应用程序重新启动时,使用的端口号都会增加,并且先前使用的端口变为“死”监听器,它们接受连接但与我的任何代码无关。

有没有办法在应用程序自身重新启动时强制关闭那些打开的套接字?

最佳答案

这有几个可能的原因。

可能是您的应用程序使用 CreateProcess 创建了子进程或类似 system 的包装器,套接字句柄由子进程继承,当您的父进程崩溃并重新启动时,子进程仍然存在。

如果是这种情况,请参阅 this answer一些解决方法。

关于c++ - WINAPI RegisterApplicationRestart 不清除打开的套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52934448/

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