0

私は、NioAccepter を使用する MINA の実装に取り​​組んでいます。

私の仕事は、他のフレームワークと Apache の MINA NIO フレームワークのjava.net.Socket両方との基本的なフレームワーク インターフェイスを作成することです。java.net.Socketこれは、MINA からフレームワークに未加工のソケットを渡すという単純なものでした。

ただし、生のソケットの公開にはまだ成功していません。MINA フレームワークを見たのはこれが初めてで、かなり混乱しています。

結果に最も近いのはこれでした:

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

NioSession.channel保護されていることを除いて、これで問題は解決しました。

ここで何か不足していますか?

4

1 に答える 1

2

基礎となるソケットにアクセスできるフレームワークは多くありません。他のスレッドがロックしていない場合にのみ、1 つのスレッドで使用するのが本当に安全です。ここで、MINA はカプセル化を使用してロックし、非同期セレクター モデルを使用しているため、ソケットにまったく触れないでください。そうしないと、めちゃくちゃになります。

とにかく、本当に複数のソケット フレームワークを使用したい場合は、異なるポートを使用することをお勧めします。ただし、実際には、1 つだけに固執してください。そして、変更が可能で理解しやすいものに取り掛かりたい場合は、ほとんど同じことを行いますが、はるかに少ないコード行で行うKryoNetをお勧めします. 私はすでに私のバージョンの KryoNet を完全に改造しました。

于 2011-05-04T17:04:51.220 に答える