我正在使用使用NioAccepter的MINA实现。
我的任务是与其他java.net.Socket
框架以及Apache的MINA NIO框架建立基本的java.net.Socket
框架接口。
这应该很简单,将原始套接字从MINA传递到我的框架。
但是,我还没有成功暴露原始套接字。这是我第一次看到MINA框架,我很困惑。
我得到的结果最接近的是:
((SocketChannel)((NioSession)sess).channel).socket()
哪会解决我的问题,除了NioSession.channel
受到保护。
我在这里错过了什么吗?
答案 0 :(得分:2)
没有多少框架可以让您访问底层套接字。当其他线程没有锁定它时,一个线程使用它是非常安全的。在这里,MINA使用封装将其锁定,并且他们使用的是异步选择器模型,所以你根本不应该触摸套接字,否则你就会搞砸它。
无论如何,如果你真的想要使用多个套接字框架,更好的想法就是使用不同的端口。但真的,只要坚持一个。我建议KryoNet做同样的事情,但远远少于代码行,如果你想要修改并易于理解的东西。我已经从我的KryoNet版本中修改了地狱。