我有一个程序可以将N个套接字打开到服务器,每个程序都在不同的线程中。 在发送两个用于登录porpuse的字符串之后,程序监听服务器,直到发生错误并且服务器发送disconnect命令,并且套接字关闭。我希望程序在服务器关闭套接字后重新连接:是否可能?
SocketList.add(new ConnectionHandler(id, actualSocket, out, in));
SocketRead p = new SocketRead(in, out, rowid);
new Thread(p).start();
我想这样,当socketread对象收到“DISCONNECT”命令时,套接字重新启动(如果需要,打开另一个线程)。
答案 0 :(得分:1)
我不确定SocketList
,ConnectionHandler
或SocketRead
是什么,所以我假设它们是您为应用程序编写的类。
如果您希望能够重新连接,那么您将不得不更改代码的结构。一方面,SocketRead
对象没有允许其重新连接所需的信息。另一方面,控制代码(您的代码段)无法检测到断开命令。
目前尚不清楚哪种方法效果最好,但这里有两个选项:
将套接字(或InetAddress
和端口号)传递给SocketRead
,并使其负责打开新套接字。
将线程传递给ConnectionHandler
并让它负责检测线程的死亡,创建新的Socket并创建新线程。
将ConnectionHandler
传递给SocketRead
对象,当发生套接字断开连接时,后者在前者中调用回调或事件处理程序方法。
答案 1 :(得分:0)
在DISCONNECT事件的事件处理程序中,输入重新连接逻辑。 有关如何编写EventHandler的更多信息,请参阅此link。