Apache Mina 2.x 简易入门解析(五)

2014-11-24 09:10:04 · 作者: · 浏览: 14
ublic static void main(String args[]){
SimpleMinaServer server = new SimpleMinaServer();
if(!server.bind()){
System.out.println("服务器启动失败");
}else{
System.out.println("服务器启动成功");
}
}

}


  2.2.3 建立Client端资源:
    1)自定义IoHandler(MyClientHandleDemo1)
      实现IoHandler接口
View Code
package com.mai.mina.diyChat;

import java.util.logging.Logger;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;

public class MyClientHandleDemo1 extends IoHandlerAdapter{
private ChatPanel messagePanel = null;
private Logger logger = Logger.getLogger(this.getClass().getName());

MyClientHandleDemo1(){

}

MyClientHandleDemo1(ChatPanel messagePanel){
this.messagePanel = messagePanel;
}


public void messageReceived(IoSession session, Object message) throws Exception {
// TODO Auto-generated method stub
String messageStr = message.toString();
logger.info("receive a message is : " + messageStr);

if(messagePanel != null)
messagePanel.showMsg(messageStr);
}

public void messageSent(IoSession session , Object message) throws Exception{
logger.info("客户端发了一个信息:" + message.toString());
}

}
    2) 建立Connector (SimpleMinaClient)
 
View Code
package com.mai.mina.diyChat;

import java.net.InetSocketAddress;
import java.nio.charset.Charset;

import org.apache.mina.core.future.CloseFuture;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LogLevel;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.SocketConnector;
import org.apache.mina.transport.socket.nio.NioSocketConnector;

public class SimpleMinaClient {

public SocketConnector connector = null;
public ConnectFuture future;
public IoSession session = null;
private ChatPanel messagePanel = null;

SimpleMinaClient(){

}

SimpleMinaClient(ChatPanel messagePanel){
this.messagePanel = messagePanel;
}


boolean connect(){
try{
connector = new NioSocketConnector();
connector.setConnectTimeoutMillis(3000);
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new MyTextLineCodecFactory());
LoggingFilter log = new LoggingFilter();
log.setMessageReceivedLogLevel(LogLevel.INFO);
connector.getFilterChain().addLast("logger", log);
connector.setHandler(new MyClientHandleDemo1(messagePanel));

future = connector.connect(new InetSocketAddress("127.0.0.1" , 8888));
future.awaitUninterruptibly();
session = future.getSession();
return true;
}catch(Exception e){
e.printStackTrace();
return false;
}

}


public void setAttribute(Object key , Object value){
session.setAttribute(key, value);
}