WEB开发网
开发学院软件开发Java 深入理解Apache Mina (3)---- 与IoHandler相... 阅读

深入理解Apache Mina (3)---- 与IoHandler相关的几个类

 2009-09-16 00:00:00 来源:WEB开发网   
核心提示:在上一篇文档中我们已经了解了IoFilter的用法和其在Mina中的作用,作为Mina数据传输过程中比较重要的组件,深入理解Apache Mina (3)---- 与IoHandler相关的几个类,IoFilter起到了承上启下的作用接收数据,编/解码,我们的例子还是以上篇文档中的IoFilter的例子为基础,在此基础

在上一篇文档中我们已经了解了IoFilter的用法和其在Mina中的作用,作为Mina数据传输过程中比较重要的组件,IoFilter起到了承上启下的作用----接收数据,编/解码,将数据传递到逻辑层,当数据传递地到逻辑层时,IoFilter的使命就完成了,那么逻辑层的数据由谁来处理呢?如何处理的?这就是本文要讲述的内容----IoHandler。

在介绍IoFilter的时候,文中首先是从IoFilter的结构和其在Mina中的作用谈起的,最后添加了一个使用IoFilter的例子,之前我将其传给几个同学看时,感觉这种方式比较晦涩,应该将例子提到前面,由于时间的关系我不能在对IoFilter的介绍做过多的修改,所以在本篇文档中我就先以一个例子开头,介绍IoHandler,希望这种讲述方式能对你理解Mina有更多的帮助。

好了,言归正传,我们的例子还是以上篇文档中的IoFilter的例子为基础,在此基础上着重突出IoHandler的作用。

Java代码  

ServerMain: 
public class ServerMain { 
 public static void main(String[] args) throws IOException { 
 SocketAddress address = new InetSocketAddress 
 
("localhost", 4321); 
 IoAcceptor acceptor = new SocketAcceptor(); 
 IoServiceConfig config = acceptor.getDefaultConfig 
 
(); 
 
 // 配置数据的编解码器 
 config.getFilterChain().addLast("codec", 
  new ProtocolCodecFilter(new 
 
ObjectSerializationCodecFactory())); 
 config.getFilterChain().addLast("logger", new 
 
LoggingFilter()); 
  
 // 绑定服务器端口 
 acceptor.bind(address, new ServerHandler()); 
 System.out.println(" 服务器开始在 8000 端口监听 
 
......."); 
 } 
} 
ServerHandler: 
public class ServerHandler extends IoHandlerAdapter { 
 // 创建会话 
 public void sessionOpened(IoSession session) throws 
 
Exception { 
 System.out.println(" 服务器创建了会话 "); 
 session.write(" 服务器创建会话时发送的信息 。"); 
 } 
 
 // 发送信息 
 public void messageSent(IoSession session, Object message) 
 
throws Exception { 
 } 
 
 // 接收信息 
 public void messageReceived(IoSession session, Object 
 
message) 
  throws Exception { 
 } 
} 
ClientMain: 
public class ClientMain { 
 
 public static void main(String[] args) { 
 SocketAddress address = new InetSocketAddress 
 
("localhost", 4321); 
 IoConnector connector = new SocketConnector(); 
 IoServiceConfig config = 
 
connector.getDefaultConfig(); 
 
 // 配置数据的编解码器 
 config.getFilterChain().addLast("codec", 
  new ProtocolCodecFilter(new 
 
ObjectSerializationCodecFactory())); 
 config.getFilterChain().addLast("logger", new 
 
LoggingFilter()); 
 
 // 连接到服务器 
 connector.connect(address, new ClientHandler()); 
 System.out.println(" 已经连接到了服务器 " + address); 
 } 
} 
 
ClientHandler: 
public class ClientHandler extends IoHandlerAdapter { 
 
 // 发送信息 
 public void messageSent(IoSession session, Object message) 
 
throws Exception {  
 } 
 
 // 接收信息 
 public void messageReceived(IoSession session, Object 
 
message) 
  throws Exception { 
 System.out.println(" 客户端接收到的服务器的信息是 " 
 
+ message); 
 } 
} 

1 2 3 4  下一页

Tags:深入 理解 Apache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接