在客户端已打开时,在ServerSocketChannel重新启动时处理连接

时间:2012-09-16 00:12:42

标签: java client serversocket socketchannel

当用户点击“连接”按钮时,我的SwingWorker doInBackground()创建(并向OP_ACCEPT注册)新的ServerSocketChannel

当客户isAcceptable()时,SwingWorkerSocketChannel注册为OP_READ

当用户点击“断开连接”按钮时,SwingWorker会关闭()ServerSocketChannelselector()。但是,客户仍然是开放的。

问题:如果用户再次点击“连接”,我认为上述过程会重复,但客户端仍处于OP_READ模式且ServerSocketChannel未被新接受。

有没有办法克服这个问题? ServerSocketChannel重启是否也要求客户端重启?

1 个答案:

答案 0 :(得分:1)

  

ServerSocketChannel重启是否也要求客户端重启?

没有。现有客户保持联系。他们不会因为你关闭服务器套接字而经历另一个连接阶段。

与上面的评论相反,断开连接按钮应关闭服务器套接字,而不是客户端套接字。但它被贴错了标签。按钮应为“开始”和“停止”,或“开始收听”和“停止收听”。这是连接的客户端。