minaの初心ノート
もっと読む
最近minaを研究されていますが、メモを書いてください.全部粗い内容です.もし全く分からないなら、読んでみてもいいです.
これはminaのウェブサイトをダウンロードするのです.
http://mina.apache.org/downloads.html
Binariesとsourcesをダウンロードした後に、工事を建てて、例を走ることができます.
まずスタートの例から始めましょう.
まずserverクラス、MinaTimeServerです.
ポートを定義します
ブロック以外の承認をオンにします.すなわちサーバです.
つまり、復号用のTextLink CodeFactoryは、その中の一つであり、つまり、各ラインごとに復号化される.
session Created、sessionを創立します.
session Openedでsessionを開く.
session Closeed、sessionを閉じます.
sessionIdle、sessionアイドル.
exceptionCaugt、異常を捕らえる.
メッセージReceived、情報を受け取る.
メッセージを送ります.
その中で一番よく使われているのはいくつかです.
message Receivedメソッドの二つのパラメータは、IoSession sessionがsessionです.Object messageはclientからの情報です.
後ろのsession.write()ユーザーに返す値です.
その後のsessionIdleというのは、sessionで遊んでいる間にすることです.
次にechoserverという例を見ます.mainは最も簡単な例とほぼ同じです.
しかし
ハンドルには
最近minaを研究されていますが、メモを書いてください.全部粗い内容です.もし全く分からないなら、読んでみてもいいです.
これはminaのウェブサイトをダウンロードするのです.
http://mina.apache.org/downloads.html
Binariesとsourcesをダウンロードした後に、工事を建てて、例を走ることができます.
まずスタートの例から始めましょう.
まずserverクラス、MinaTimeServerです.
ポートを定義します
private static final int PORT = 9123;
メール関数で、ブロック以外の承認をオンにします.すなわちサーバです.
IoAcceptor acceptor = new NioSocketAcceptor();
filterを追加します.これはlogです.何も言いません.acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
これはよく言ってもいいです.filterchainはfilterのチェーンです.これはcodecです.つまり、復号用のTextLink CodeFactoryは、その中の一つであり、つまり、各ラインごとに復号化される.
acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));
以下はsetのハンドルです.つまり、clientから入ってきたデータをどう解決しますか?acceptor.setHandler( new TimeServerHandler() );
これは≒ioの中のブザーです.acceptor.getSessionConfig().setReadBufferSize( 2048 );
IDを設定します.10は10秒です.acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );
最後に縛ります.okです.acceptor.bind( new InetSocketAddress(PORT) );
TimeServer Handler類extensはIoHandler Adapterを作っています.IoHandler Adapterはいくつかの空虚な実装しかありません.またF 3からIoHandlerインターフェースまで、多くの方法があります.名前でも分かりやすいです.session Created、sessionを創立します.
session Openedでsessionを開く.
session Closeed、sessionを閉じます.
sessionIdle、sessionアイドル.
exceptionCaugt、異常を捕らえる.
メッセージReceived、情報を受け取る.
メッセージを送ります.
その中で一番よく使われているのはいくつかです.
@Override
public void exceptionCaught( IoSession session, Throwable cause ) throws Exception
{
cause.printStackTrace();
}
@Override
public void messageReceived( IoSession session, Object message ) throws Exception
{
System.out.println(message.getClass());
String str = message.toString();
if( str.trim().equalsIgnoreCase("quit") ) {
// "Quit" ? let's get out ...
session.close(true);
return;
}
// Send the current date back to the client
Date date = new Date();
session.write( date.toString() );
System.out.println("Message written...");
}
@Override
public void sessionIdle( IoSession session, IdleStatus status ) throws Exception
{
System.out.println( "IDLE " + session.getIdleCount( status ));
}
この三つですmessage Receivedメソッドの二つのパラメータは、IoSession sessionがsessionです.Object messageはclientからの情報です.
System.out.println(message.getClass());
String型が発見されるのは、codecが使われているからです.さもないと戻ってくるのはIoBufferです.後ろのsession.write()ユーザーに返す値です.
その後のsessionIdleというのは、sessionで遊んでいる間にすることです.
次にechoserverという例を見ます.mainは最も簡単な例とほぼ同じです.
しかし
acceptor.getStatistics().getReadBytesThroughput()
この方法は何をするか分かりません.いつもコンソールから出力されるので、嫌です.また、何を入力してもこの値は変わらないので、いつも0.0です.牛人の説明を期待しています.ハンドルには
@Override
public void sessionCreated(IoSession session) {
session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
// We're going to use SSL negotiation notification.
session.setAttribute(SslFilter.USE_NOTIFICATION);
}
前の例にメールに書いたものをいくつか設置しました.このように書いたらもっと専門的です.
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
LOGGER.info( "Received : " + message );
// Write the received data back to remote peer
session.write(((IoBuffer) message).duplicate());
}
ここでは、文字を入力する理由を明らかにします.出力は確かに2つです.