Java 检测服务器和客户端之间的连接丢失
服务器如何知道客户端连接丢失?这会触发一个事件吗?这是否可以存储代码(服务器端),以便在发生连接丢失之前执行 如果出现以下情况,可能会发生此连接丢失:Java 检测服务器和客户端之间的连接丢失,java,php,Java,Php,服务器如何知道客户端连接丢失?这会触发一个事件吗?这是否可以存储代码(服务器端),以便在发生连接丢失之前执行 如果出现以下情况,可能会发生此连接丢失: 无所事事太久 客户端终止 等等 这是我特别向Jsp和php提出的要求。当您关闭一个套接字时,另一端的套接字会收到通知。但是,如果连接不正常断开(例如,网络电缆被拔下,或计算机断电),则您可能无法发现 为了解决这个问题,您可以定期发送消息来检查连接。如果发送失败,则连接已中断。不过,请确保将套接字设置为只等待合理的时间 如果您谈论的是典型的客户
- 无所事事太久李>
- 客户端终止
这是我特别向Jsp和php提出的要求。当您关闭一个套接字时,另一端的套接字会收到通知。但是,如果连接不正常断开(例如,网络电缆被拔下,或计算机断电),则您可能无法发现
为了解决这个问题,您可以定期发送消息来检查连接。如果发送失败,则连接已中断。不过,请确保将套接字设置为只等待合理的时间 如果您谈论的是典型的客户机-服务器体系结构,那么服务器不应该担心与客户机的连接。只有客户端才应该关心到服务器的连接。客户端应采取措施避免连接被中断,如定期发送保持活动状态消息或类似消息以避免超时 为什么服务器需要担心连接丢失/终止 服务器作业是为来自客户端的请求提供服务。就这样。若客户端并没有从服务器接收到预期的数据,那个么它可以采取适当的措施。若在服务器为向客户端提供数据而进行某些处理时连接断开;然后服务器也不能做很多事情,因为http请求是由客户端发起的
因此,如果客户端由于某种原因没有得到响应,它可以发出新的请求。这取决于您所谈论的协议,但“连接”通常是通过三方握手建立的,这使得双方都同意他们现在“连接”了。这意味着双方在一个表中记住,在端口x上有一个到IP a.b.c.d的开放连接,以及这个“连接”与什么上下文相关。然后,来自该“连接”的所有传入数据被传递到关联的上下文 这就是它的全部,没有真正的“物理”联系;这只是两党之间达成的协议 根据协议的不同,可以使用适当的数据包正式终止连接。一方将此数据包发送给另一方,告知其“连接”已终止;双方都删除了表条目,就这样 如果在没有发送此数据包的情况下连接中断,则任何一方都不会知道。只有下一次一方试图向另一方发送数据时,这个问题才会变得明显 根据协议的不同,如果在一定时间内没有收到数据,连接可能会自动被视为过时并终止。在这种情况下,死连接会很快被注意到,但需要在双方之间进行某种形式的持续来回
简而言之:是的,有一个服务器事件可以被触发,但不能保证一定会被触发。一般来说?用一种特定的语言?特定类型的服务器和连接?请提供更多详细信息。如果我使用php作为服务器语言,我可以捕获该事件吗?或者服务器的性质因进程的不同而不同,比如这个进程?您正在创建与PHP服务器的哪种连接?99%的PHP脚本响应HTTP请求,这是非常短暂的连接。它基于会话。我想要实现的是,检测这样的事件(如果存在),在客户端终止之前获取触发器。假设我想在客户端终止时销毁会话。你是说有会话的标准网站吗?然后就没有长时间运行的“连接”。连接仅在加载页面时存在。没有活动的连接,而网页只是坐在那里,在浏览器中什么也不做!