我开始使用 mina 对套接字进行异步写入,但现在我似乎无法关闭 session 。有没有办法强制 mina 关闭所有托管 session 或清理?这就是我现在要清理的东西:
if(this.acceptor.isActive()) {
for(IoSession session : this.acceptor.getManagedSessions().values()) {
session.close(true);
}
this.acceptor.unbind();
this.acceptor.dispose();
}
谢谢
最佳答案
你把代码放在哪里了?
我只是像下面这样使用循环,所有 session 都关闭了。首先,运行服务器并在 10 秒内启动 3 个客户端。当 10 秒结束时,您会看到所有客户的 session 都将关闭。
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.service.IoAcceptor;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class MinaServer {
public static void main(String[] args) throws Exception {
IoAcceptor acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
acceptor.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset
.forName("UTF-8"))));
acceptor.setHandler(new ServerHandler());
acceptor.bind(new InetSocketAddress(1071));
Thread.sleep(10000);
if (acceptor.isActive()) {
for (IoSession ss : acceptor.getManagedSessions().values()) {
ss.close(true);
}
}
}
}
关于java - 强制 MINA niosocketacceptor 清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5356926/