我在寫一個使用Java非阻塞SocketChannel的服務器程序。有時我想發送回覆消息,然後關閉頻道,如下面的代碼。如何正確關閉非阻塞套接字通道?
但是,close()方法中斷write()方法,我得到java.nio.channels.ClosedChannelException,並且不發送消息。
我可以在關閉通道之前彈出一個線程並等待1-2秒,但是我覺得製作另一個線程太浪費了。
什麼是在掛起操作時關閉SocketChannel的正確方法?
String msg = "Wrong password!";
channel.write(ByteBuffer.wrap(msg.getBytes()));
channel.close();
這聽起來不對。 *關閉頻道後,您必須先寫*。我有這樣幾英里的代碼,它並沒有這樣做。 – EJP 2010-12-03 00:54:53