【发布时间】:2011-05-19 10:50:18
【问题描述】:
我正在使用 Java 非阻塞 SocketChannel 编写服务器程序。有时我想发送一个回复消息然后关闭频道,如下代码。
但是,close() 方法中断了 write() 方法,我得到一个 java.nio.channels.ClosedChannelException 并且消息没有发送。
我可以弹出一个线程等待1-2秒再关闭频道,但是我觉得再做一个线程太浪费了。
当有挂起的操作时关闭 SocketChannel 的正确方法是什么?
String msg = "Wrong password!";
channel.write(ByteBuffer.wrap(msg.getBytes()));
channel.close();
【问题讨论】:
-
这听起来不对。您必须在关闭频道后进行写入。我有数英里这样的代码,但它不会那样做。
标签: java sockets networking nonblocking