0

当用户单击“连接”按钮时,我的 SwingWorkerdoInBackground()会创建(并注册OP_ACCEPT)一个新的。ServerSocketChannel

当一个客户isAcceptable()时,SwingWorker注册SocketChannelOP_READ

当用户单击“断开连接”按钮时,SwingWorkercloses()ServerSocketChannelselector(). 但是,客户端仍然是打开的。

问题:如果用户再次单击“连接”,在我看来,上述过程会重复,只是客户端仍处于OP_READ模式并且没有被ServerSocketChannel.

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

4

1 回答 1

1

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

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

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

于 2012-09-16T04:43:31.743 回答