2011-05-04 5 views
0

NioAccepter를 사용하는 MINA 구현과 함께 작업하고 있습니다.Java MINA 노출 소켓

내 작업은 다른 java.net.Socket 프레임 워크와 Apache MINA NIO 프레임 워크와 함께 기본 java.net.Socket 프레임 워크 인터페이스를 만드는 것입니다. 이것은 원시 소켓을 MINA에서 프레임 워크로 전달하면서 충분히 간단해야합니다.

그러나 원시 소켓을 아직 공개하지 못했습니다. MINA 프레임 워크를 처음 보았는데 꽤 혼란 스럽습니다. NioSession.channel 제외

내 문제를 해결 한 것
((SocketChannel)((NioSession)sess).channel).socket() 

이 보호 :

나는 그 결과에 도착 가장 가까운이이었다.

여기에 뭔가가 있습니까?

답변

2

프레임 워크가 많지 않으므로 기본 소켓에 액세스 할 수 없습니다. 다른 스레드가 스레드를 잠그지 않을 때 한 스레드에서만 사용하는 것이 안전합니다. 여기서 MINA는 캡슐화를 사용하여 잠금을 해제하고 비동기 선택기 모델을 사용하므로 소켓을 만지지 않아야합니다. 그렇지 않으면 엉망이됩니다.

어쨌든 다중 소켓 프레임 워크를 실제로 사용하려는 경우에는 다른 포트를 사용하는 것이 좋습니다. 정말로, 그러나, 단지 1와 함께 달라 붙어 라. 그리고 KryoNet은 훨씬 똑같은 일을하지만 코드의 줄이 훨씬 적습니다. 변경하고 이해하기 쉬운 것으로 무언가를 엎어 버리고 더러워지기를 원한다면 말이죠. 이미 KryoNet의 제 버전에서 벗어났습니다.

+0

팁 주셔서 감사하지만, 내가 다루는 프레임 워크는 내가 바꿀 수는 없지만 다른 사람들이 바꿀 수있는 널리 사용되는 라이브러리입니다. 저는 MINA와의 인터페이스를위한 새로운 프레임 워크를 작성하는 것을 피하려고합니다. –

+0

Chris Denett와의 합의 - MINA는 비동기 소켓을 제어합니다. 다른 곳에서 사용하면 이상한 방식으로 고장납니다. –