Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检测服务器和客户端之间的连接丢失_Java_Php - Fatal编程技术网

Java 检测服务器和客户端之间的连接丢失

Java 检测服务器和客户端之间的连接丢失,java,php,Java,Php,服务器如何知道客户端连接丢失?这会触发一个事件吗?这是否可以存储代码(服务器端),以便在发生连接丢失之前执行 如果出现以下情况,可能会发生此连接丢失: 无所事事太久 客户端终止 等等 这是我特别向Jsp和php提出的要求。当您关闭一个套接字时,另一端的套接字会收到通知。但是,如果连接不正常断开(例如,网络电缆被拔下,或计算机断电),则您可能无法发现 为了解决这个问题,您可以定期发送消息来检查连接。如果发送失败,则连接已中断。不过,请确保将套接字设置为只等待合理的时间 如果您谈论的是典型的客户

服务器如何知道客户端连接丢失?这会触发一个事件吗?这是否可以存储代码(服务器端),以便在发生连接丢失之前执行

如果出现以下情况,可能会发生此连接丢失:

  • 无所事事太久
  • 客户端终止
等等


这是我特别向Jsp和php提出的要求。

当您关闭一个套接字时,另一端的套接字会收到通知。但是,如果连接不正常断开(例如,网络电缆被拔下,或计算机断电),则您可能无法发现


为了解决这个问题,您可以定期发送消息来检查连接。如果发送失败,则连接已中断。不过,请确保将套接字设置为只等待合理的时间

如果您谈论的是典型的客户机-服务器体系结构,那么服务器不应该担心与客户机的连接。只有客户端才应该关心到服务器的连接。客户端应采取措施避免连接被中断,如定期发送保持活动状态消息或类似消息以避免超时

为什么服务器需要担心连接丢失/终止

服务器作业是为来自客户端的请求提供服务。就这样。若客户端并没有从服务器接收到预期的数据,那个么它可以采取适当的措施。若在服务器为向客户端提供数据而进行某些处理时连接断开;然后服务器也不能做很多事情,因为http请求是由客户端发起的


因此,如果客户端由于某种原因没有得到响应,它可以发出新的请求。

这取决于您所谈论的协议,但“连接”通常是通过三方握手建立的,这使得双方都同意他们现在“连接”了。这意味着双方在一个表中记住,在端口x上有一个到IP a.b.c.d的开放连接,以及这个“连接”与什么上下文相关。然后,来自该“连接”的所有传入数据被传递到关联的上下文

这就是它的全部,没有真正的“物理”联系;这只是两党之间达成的协议

根据协议的不同,可以使用适当的数据包正式终止连接。一方将此数据包发送给另一方,告知其“连接”已终止;双方都删除了表条目,就这样

如果在没有发送此数据包的情况下连接中断,则任何一方都不会知道。只有下一次一方试图向另一方发送数据时,这个问题才会变得明显

根据协议的不同,如果在一定时间内没有收到数据,连接可能会自动被视为过时并终止。在这种情况下,死连接会很快被注意到,但需要在双方之间进行某种形式的持续来回


简而言之:是的,有一个服务器事件可以被触发,但不能保证一定会被触发。

一般来说?用一种特定的语言?特定类型的服务器和连接?请提供更多详细信息。如果我使用php作为服务器语言,我可以捕获该事件吗?或者服务器的性质因进程的不同而不同,比如这个进程?您正在创建与PHP服务器的哪种连接?99%的PHP脚本响应HTTP请求,这是非常短暂的连接。它基于会话。我想要实现的是,检测这样的事件(如果存在),在客户端终止之前获取触发器。假设我想在客户端终止时销毁会话。你是说有会话的标准网站吗?然后就没有长时间运行的“连接”。连接仅在加载页面时存在。没有活动的连接,而网页只是坐在那里,在浏览器中什么也不做!