Mina通信框架应用6

来源:互联网 发布:澳洲什么值得买 知乎 编辑:程序博客网 时间:2024/05/22 01:55

 使用Mina开发通信应用程序的过程简化为只是实现一个IoHandlerAdapter子类,响应其中的通信事件而己;实现IoHandlerAdapter时,使用了一个关键类是IoSession对象,IoSession可以理解为类似于Socket对象的连结对象,在Mina体系中,它代表了客户机与服务器的连结,IoSession对象有一个getId()的方法,得到每个连结的唯一ID用以标识连结的唯一性。

NioSocketAcceptor: 这是创建非阻塞服务器端的类,类似与java中的ServerSocket,非阻塞I/O,是java5里提供的一组新的API,意思是我们的服务器不用像以前那样调用accept()方法,阻塞等待了。

NioSocketConnector:功能似于jdk中的Socket类,当然,也是非阻塞的读取数据!

DefaultIoFilterChainBuilder:对接收到的数据进行过滤的创建器,用以设定通信时的协议,在本例中,程序规则是一行数据就是一条消息,通过:

//设定这个过滤器将一行一行(/r/n)的读取数据

        chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));

  来设定

IoHandlerAdapter:这是一个抽像类,专门用来让我们重写以处理程序接收到的消息的,并处理通信中的连结,断开,消息到达等事件。客户机和服务器端创建后,都有一个setHandler方法,就是要传入我们重写了这个类的对象。

  其中各个方法在通信中会根据情况自动调用,类似与Swing事件中的调用机制。

IoHandlerAdapter实现类中最重要的一个方法是:

//当客户端发送的消息到达时:

    @Override

    public void messageReceived(IoSession session, Object message)

  这个方法传进来两个参数,第一个,代表了与对方机器的Tcp/IP连结,第二个,代表了接收到的数据,为什么定义为Object型?为了你灵活使用啊,怎个灵活法?看我们后面的Demo!

原创粉丝点击