java - 如何在进程终止时执行操作?

标签 java sockets process terminate

我用Java编写了一个程序,它为一个简单的在线游戏创建了一个套接字连接。该服务器是多客户端的,并且有一个已记录的用户列表。当我关闭客户端时,它会向服务器发送一条消息以注销用户。我还希望当客户端通过 Eclipse(或 Windows 任务管理器)的“终止”按钮终止时,客户端会发送相同的消息。我尝试使用 ShootdownHook 但它不起作用。任何想法? 谢谢。

最佳答案

为了拥有一个健壮的系统,您有时需要实现一个允许服务器关闭连接的心跳机制。例如,如果客户端在过去 30 秒内没有设置心跳,则关闭连接。考虑一下客户端和服务器之间的网络出现故障的情况……或者客户端运行的机器惨遭死亡。在这些情况下,您不能依赖客户端的注销消息到达服务器。

话虽如此,我怀疑 shutdown hook 来不及进行实际的网络 IO。我已成功使用关闭 Hook 来关闭连接。因此,您需要进行更正式的关闭,在启动其他关闭 Activity (尤其是关闭连接)之前发送消息。

关于java - 如何在进程终止时执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005982/

相关文章:

c - 使用阻塞 I/O 通过套接字读取所有可用字节

Java - 系统进程监听器

windows - 使用不同的进程名称执行批处理文件

java - Eclipse:添加 javadoc

java - 简单的java套接字客户端,什么抛出这个ConnectException?

java - 如何使用jenkins ant build tool中的 `Java Options`设置ANT_OPTS

android - 如何在android上实现一个HTTP服务器

ubuntu - 限制进程在其生命周期内可以打开的文件描述符的数量

java - 如何为 Hibernate 设置 HSQLDB?

java - 使用泛型进行类型检查