@Override
public void dispose(IoSession arg0) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void finishDecode(IoSession arg0, ProtocolDecoderOutput arg1)
throws Exception {
// TODO Auto-generated method stub
}
}
2)建立Encoder (MyTextLineEncoder)
实现了ProtocolEncoder接口
View Code
package com.mai.mina.diyCodecFilter;
import java.nio.charset.Charset;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolEncoder;
import org.apache.mina.filter.codec.ProtocolEncoderOutput;
import org.apache.mina.filter.codec.textline.LineDelimiter;
public class MyTextLineEncoder implements ProtocolEncoder{
Charset charset = Charset.forName("UTF-8");
@Override
public void dispose(IoSession session) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void encode(IoSession session, Object message, ProtocolEncoderOutput output)
throws Exception {
// TODO Auto-generated method stub
IoBuffer buf = IoBuffer.allocate(100).setAutoExpand(true);
buf.putString(message.toString(), charset.newEncoder());
buf.putString(LineDelimiter.DEFAULT.getValue(), charset.newEncoder());
buf.flip();
output.write(buf);
}
}
3)建立MyTextLineCodecFactory
实现了ProtocolCodecFactory接口
package com.mai.mina.diyCodecFilter;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFactory;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolEncoder;
public class MyTextLineCodecFactory implements ProtocolCodecFactory{
@Override
public ProtocolDecoder getDecoder(IoSession arg0) throws Exception {
// TODO Auto-generated method stub
return new MyTextLineDecoder();
}
@Override
public ProtocolEncoder getEncoder(IoSession arg0) throws Exception {
// TODO Auto-generated method stub
return new MyTextLineEncoder();
}
}
2.2.2 建立服务器端资源(包括Acceptor的配置、Handler建立)
1). 建立自定义IoHandler(MyServerHandleDemo1)
实现了IoHandler接口。
View Code
package com.mai.mina.diyChat;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.logging.Logger;
import org.apache.mina.core.future.CloseFuture;
import org.apache.mina.core.future.IoFuture;
import org.apache.mina.core.future.IoFutureListener;
import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class MyServerHandleDemo1 implements IoHandler{
private Logger logger = Logger.getLogger(this.getClass().getName());
@Override
public void exceptionCaught(IoSession session, Throwable arg1)
throws Exception {
// TODO Auto-generated method stub
logger.warning("服务器启动发生异常,have a exception : " + arg1.getMessage());
}
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
// TODO Auto-generated method stub
String messageStr = message.