2014-10-27 53 views
2

我正在使用NIO非阻塞技术在java中编写ftp服务器。 我想阻止用户连接到我的服务器,然后什么都不做。 这里是我的代码片段:java非阻塞网络编程超时问题

ServerSocketChannel serverChannel = (ServerSocketChannel) key.channel(); 
SocketChannel socketChannel = serverChannel.accept(); 
socketChannel.socket().setSoTimeout(3000); 
socketChannel.configureBlocking(false); 
.................... 

它不工作。嗯......当用户什么都不做时(例如说15分钟),有可能抛出异常吗?

非常感谢你

回答

0
socketChannel.socket().setSoTimeout(3000); 

你已经做到了。但是,你也可以将频道设置为非阻止模式,这可以防止你获得超时异常。如果您使用的是非阻塞模式,因此也可能是select(),您必须自行管理超时。