0

我正在使用一个使用 NioAccepter 的 MINA 实现。

我的任务是java.net.Socket与其他java.net.Socket框架以及 Apache 的 MINA NIO 框架建立一个基本的框架接口。这应该很简单,将原始套接字从 MINA 传递到我的框架。

但是,我还没有成功暴露原始套接字。这是我第一次看到 MINA 框架,我很困惑。

我最接近的结果是这样的:

((SocketChannel)((NioSession)sess).channel).socket()

这将解决我的问题,除了NioSession.channel受到保护。

我在这里错过了什么吗?

4

1 回答 1

2

没有多少框架可以让您访问底层套接字。只有当其他线程没有锁定它时,由一个线程使用才是真正安全的。在这里,MINA 使用封装将其锁定,并且他们使用异步选择器模型,因此您根本不应该触摸套接字,否则会搞砸它。

无论如何,如果你真的想使用多个套接字框架,一个更好的主意是只使用不同的端口。不过,真的,只要坚持一个。我建议KryoNet做同样的事情,但代码行数要少得多,如果你想用一些你可以修改并且易于理解的东西来处理问题。我已经修改了我的 KryoNet 版本。

于 2011-05-04T17:04:51.220 回答