套接字关闭时重新连接到服务器

时间:2011-02-19 12:23:36

标签: java

我有一个程序可以将N个套接字打开到服务器,每个程序都在不同的线程中。 在发送两个用于登录porpuse的字符串之后,程序监听服务器,直到发生错误并且服务器发送disconnect命令,并且套接字关闭。我希望程序在服务器关闭套接字后重新连接:是否可能?

            SocketList.add(new ConnectionHandler(id, actualSocket, out, in));

            SocketRead p = new SocketRead(in, out, rowid);
            new Thread(p).start();

我想这样,当socketread对象收到“DISCONNECT”命令时,套接字重新启动(如果需要,打开另一个线程)。

2 个答案:

答案 0 :(得分:1)

我不确定SocketListConnectionHandlerSocketRead是什么,所以我假设它们是您为应用程序编写的类。

如果您希望能够重新连接,那么您将不得不更改代码的结构。一方面,SocketRead对象没有允许其重新连接所需的信息。另一方面,控制代码(您的代码段)无法检测到断开命令。

目前尚不清楚哪种方法效果最好,但这里有两个选项:

  • 将套接字(或InetAddress和端口号)传递给SocketRead,并使其负责打开新套接字。

  • 将线程传递给ConnectionHandler并让它负责检测线程的死亡,创建新的Socket并创建新线程。

  • ConnectionHandler传递给SocketRead对象,当发生套接字断开连接时,后者在前者中调用回调或事件处理程序方法。

答案 1 :(得分:0)

在DISCONNECT事件的事件处理程序中,输入重新连接逻辑。 有关如何编写EventHandler的更多信息,请参阅此link