当用户点击“连接”按钮时,我的SwingWorker doInBackground()
创建(并向OP_ACCEPT
注册)新的ServerSocketChannel
。
当客户isAcceptable()
时,SwingWorker
将SocketChannel
注册为OP_READ
。
当用户点击“断开连接”按钮时,SwingWorker
会关闭()ServerSocketChannel
和selector()
。但是,客户仍然是开放的。
问题:如果用户再次点击“连接”,我认为上述过程会重复,但客户端仍处于OP_READ
模式且ServerSocketChannel
未被新接受。
有没有办法克服这个问题? ServerSocketChannel
重启是否也要求客户端重启?
答案 0 :(得分:1)
ServerSocketChannel重启是否也要求客户端重启?
没有。现有客户保持联系。他们不会因为你关闭服务器套接字而经历另一个连接阶段。
与上面的评论相反,断开连接按钮应关闭服务器套接字,而不是客户端套接字。但它被贴错了标签。按钮应为“开始”和“停止”,或“开始收听”和“停止收听”。这是连接的客户端。