1、服务器端
public class MinaServer {
public static final int PORT=1234;
private static Logger log = Logger.getLogger(MinaServer.class);
public static void main(String[] args) {
try{
//创建一个非阻塞的server
IoAcceptor acceptor = new NioSocketAcceptor();
//log过滤器
acceptor.getFilterChain().addLast("logger", new LoggingFilter());
//编码解码过滤器
acceptor.getFilterChain().addLast( "codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
//设置通道占用时间
acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
//业务逻辑对象
acceptor.setHandler(new MinaServerHandler());
//端口邦定
acceptor.bind(new InetSocketAddress(PORT));
log.info("MESSAGE:SERVER MESSAGE:FRONT END SERVER IS LAUNCH,LISTENER PORT:" + PORT);
} catch (IOException e) {
e.printStackTrace();
}
}
}
2、服务器的业务逻辑处理
public class MinaServerHandler extends IoHandlerAdapter {
private final Logger logger =Logger.getLogger(MinaServerHandler.class);
boolean sendFlag=false;
private static String sendMsg="Hello Client,server receive message...";
@Override
public void sessionOpened(IoSession session) {
logger.info("==================================MESSAGE:SERVICE START=============================");
session.setAttribute("Values: ");
}
@Override
public void messageReceived(IoSession session, Object message) {
sendFlag=true;
logger.info("Message received in the server..");
logger.info("Message is: " + message.toString());
if(sendFlag){
try {
// messageSent(session,MinaClient02.getMsgLength(sendMsg).getBytes());
messageSent(session,sendMsg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void sessionIdle(IoSession session, IdleStatus status) {
logger.info("Disconnecting the idle.");
session.close(true);
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
logger.info("Message Sent....");
session.write(message);
session.close(true);
}
@Override
public void exceptionCaught(IoSession session, Throwable cause) {
session.close(true);
}
@Override
public void sessionClosed(IoSession session) throws Exception {
logger.info("==================================MESSAGE:SERVICE END=============================");
}
}
3、客户端
public class MinaClient {
private static String sendMsg="respMsg=中华人民共和国&respTime=20121105093922&merId=123456789012345&merAbbr=CUPDATA IC TEST3&orderNumber=IC13520795375152872&qid=013746&orderAmount=000000000001&orderCurrency=156&settleAmount";
private static final int PORT = 1234;
public static void main(String[] args) {
//客户端对象
IoConnector connector = new NioSocketConnector();
//可读缓存的大小
connector.getSessionConfig().setReadBufferSize(2048);
//log过滤器
connector.getFilterChain().addLast("logger", new LoggingFilter());
//编码解码过滤器
connector.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
//业务逻辑处理对象
connector.setHandler(new MinaClientHandler());
//建立连接
ConnectFuture future = connector.connect(new InetSocketAddress("localhost", PORT));
future.awaitUninterruptibly();
if (!future.isConnected()) {
return;
}
//允许读操作
future.getSession().getConfig().setUseReadOperation(true);
//写消息
future.getSession().write(getSendMsgLen(sendMsg));
//等待操作的完成
future.getSession().getCloseFuture().awaitUninterruptibly();
System.out.println("After Writing");
//连接关闭
connector.dispose();
}
}
4、客户端的业务逻辑处理
public class MinaClientHandler extends IoHandlerAdapter {
private final Logger logger = Logger.getLogger(getClass());
private boolean finished;
private String values;
public MinaClientHandler() {
}
public MinaClientHandler(String values) {
this.values = values;
}
public boolean isFinished() {
return finished;
}
@Override
public void messageReceived(IoSession session, Object message) {
logger.info("Message received in the client..");
logger.info("Message is: " + message.toString());
}
@Override
public void exceptionCaught(IoSession session, Throwable cause) {
session.close(true);
}
}
希望对像我一样的出学有所帮助