最近要用java做个数据处理接口程序。用socket通讯,所以想到了用mina来做服务器端。不多说直接上代码。
首先导入所需jar包
初始化mina服务类
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.net.InetSocketAddress;
public class MainServer extends Thread{
private final static Logger logger = LoggerFactory.getLogger(MainServer.class);
//the mina info
public boolean isAlive = true;
public MainHandler handler;
public NioSocketAcceptor socketAcceptor;
public final int port = 8005;
public MainServer(){
super("MainServer");
socketAcceptor = new NioSocketAcceptor();
socketAcceptor.setReuseAddress(true);
socketAcceptor.getSessionConfig().setKeepAlive(true);
handler = new MainHandler();
socketAcceptor.setHandler(handler);
//设置过滤器
DefaultIoFilterChainBuilder chain = socketAcceptor.getFilterChain();
chain.addLast("codec", new ProtocolCodecFilter(new BufferCoderFactory()));//明码字符串
}
public void run(){
while(isAlive){
try {
sleep(3000);
} catch (Exception e) {
// TODO: handle exception
}
}
System.exit(0);
}
public void startAcceptor(){
try {
socketAcceptor.bind(new InetSocketAddress(port));
this.start();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
*/
public static void main(String[] args) {
//start mina and database
MainServer main = new MainServer();
main.startAcceptor();
logger.info("server started finished !!!");
}
}
编解码工厂类
import org.apache.mina.core.session.IoSessi