2012-09-01 102 views
-2

我正在开发一个基于GUI和数据库的Java多客户端服务器程序。客户端对程序的需求是确保始终与服务器连接,并且如果连接丢失(服务器停机/套接字或流问题),应该通知它。Java通过套接字连续检查连接

换句话说,我需要一个连续检查到服务器连接的解决方案。

这样做的最好方法是什么?

回答

-1

实施心脏的跳动协议...

如果你不该做什么,你可以使用一个连接监听线程 Socket.isConnected

+0

好的我会这么做的。谢谢。 – Onca

+0

Socket.isComnected()只告诉你是否曾经连接* socket。*它不知道任何有关*连接的状态* – EJP

+0

它告诉你一个套接字是否绑定并成功连接......实际上一个连接的状态,下次读取引用,然后投票下来! –

-1

检查套接字连接被关闭。

if(Socket.isClosed()) { 
    //reconnect or alert the user 
} //end if 
+2

这只会告诉你是否自己关闭了插座。它没有告诉你有关连接。显然你还没有尝试过。 -1。 – EJP

0

TCP/IP中没有这样的API。检测TCP连接失败的唯一方法是尝试使用它。您可能会考虑在协议中添加心跳,但与客户端人员一起检查需求可能会更好。根据设计,TCP/IP没有“拨号音”,并且在应用程序级别添加一个并不重要,容易出错,并且带来时间和空间开销。