java - 当客户端已打开时处理 ServerSocketChannel 重新启动的连接

标签 java client serversocket socketchannel

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

当客户端 isAcceptable() 时,SwingWorker 会使用 OP_READ 注册 SocketChannel

当用户单击“断开连接”按钮时,SwingWorker close() ServerSocketChannelselector()。然而,客户端仍然开放。

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

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

最佳答案

Does a ServerSocketChannel restart require that clients restart as well?

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

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

关于java - 当客户端已打开时处理 ServerSocketChannel 重新启动的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12443440/

相关文章:

java - Java中如何将一个类的String值调用到另一个类

java - spring boot XSRF-TOKEN如何添加ssl(https),配置

c# - 服务器未提供有意义的回复,这可能是由于契约(Contract)不匹配、 session 过早关闭或内部服务器错误造成的

java - 使用本地PC作为服务器

c# - 在.Net中设计 "Scalable Multi Threaded Socket Push Server"

java - HashMap 数据未将新数据追加到 ArrayList 中

python udp客户端超时机制

java - 为什么 getElementsByTagNameNS 在 java 中是空的?

java - JTable 未使用 DButils 从结果集中填充

rest - 无法使用 RestResponse 接收 contentType "application/pdf"