public class EchoProtocolHandler extends IoHandlerAdapter
{
public void sessionCreated( IoSession session )
{
if (session.getTransportType() == TransportType.SOCKET) {
((SocketSessionConfig)session.getConfig()).setReceiveBufferSize(2048);
}
public void exceptionCaught( IoSession session, Throwable cause )
{
session.close();
}
public void messageReceived( IoSession session, Object message )
{
if (!(message instanceof ByteBuffer))
return;
ByteBuffer rb = (ByteBuffer)message;
// Write the received data back to remote peer
ByteBuffer wb = ByteBuffer.allocate( rb.remaining() );
wb.put( rb );
wb.flip();
session.write( wb );
}
}
剛剛我們使用MINA實現echo協議,現在我們將handler綁定到一個server連接埠上。
import java.net.InetSocketAddress;
import org.apache.mina.transport.socket.nio.SocketAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;
public class Main
{
/** Choose your favorite port number. */
private static final int PORT = 8080;