我正在开发一个基于GUI和数据库的Java多客户端服务器程序。客户端对程序的需求是确保始终与服务器连接,并且如果连接丢失(服务器停机/套接字或流问题),应该通知它。Java通过套接字连续检查连接
换句话说,我需要一个连续检查到服务器连接的解决方案。
这样做的最好方法是什么?
我正在开发一个基于GUI和数据库的Java多客户端服务器程序。客户端对程序的需求是确保始终与服务器连接,并且如果连接丢失(服务器停机/套接字或流问题),应该通知它。Java通过套接字连续检查连接
换句话说,我需要一个连续检查到服务器连接的解决方案。
这样做的最好方法是什么?
实施心脏的跳动协议...
如果你不该做什么,你可以使用一个连接监听线程 Socket.isConnected
检查套接字连接被关闭。
if(Socket.isClosed()) {
//reconnect or alert the user
} //end if
这只会告诉你是否自己关闭了插座。它没有告诉你有关连接。显然你还没有尝试过。 -1。 – EJP
TCP/IP中没有这样的API。检测TCP连接失败的唯一方法是尝试使用它。您可能会考虑在协议中添加心跳,但与客户端人员一起检查需求可能会更好。根据设计,TCP/IP没有“拨号音”,并且在应用程序级别添加一个并不重要,容易出错,并且带来时间和空间开销。
好的我会这么做的。谢谢。 – Onca
Socket.isComnected()只告诉你是否曾经连接* socket。*它不知道任何有关*连接的状态* – EJP
它告诉你一个套接字是否绑定并成功连接......实际上一个连接的状态,下次读取引用,然后投票下来! –