iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Apache MINA中怎么进行对象传输
  • 937
分享到

Apache MINA中怎么进行对象传输

2023-06-17 10:06:20 937人浏览 安东尼
摘要

Apache MINA中怎么进行对象传输,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。利用Apache MINA来传递对象,这对了MINA来说非常容易,并且这也是Java网络编

Apache MINA中怎么进行对象传输,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

利用Apache MINA来传递对象,这对了MINA来说非常容易,并且这也是Java网络编程中很常用的应用。其实对于MINA传递对象来说,如果看过前一篇文章的话,只要在其中做少许改动就可以实现对象传递,但这里考虑到例子的完整性,还是给出了全部代码示例。

首先看两个用来传递的Java对象MyRequestObject和MyResponseObject,很简单只是实现了Serializable接口罢了。

package com.Google.code.garbagecan.minastudy.sample3;   import java.io.Serializable;   public class MyRequestObject implements Serializable {       private static final long serialVersionUID = 1L;       private String name;            private String value;       public MyRequestObject(String name, String value) {          this.name = name;          this.value = value;      }            public String getName() {          return name;      }       public void setName(String name) {          this.name = name;      }       public String getValue() {          return value;      }       public void setValue(String value) {          this.value = value;      }            @Override     public String toString() {          StringBuffer sb = new StringBuffer();          sb.append("Request [name: " + name  + ", value: " + value + "]");          return sb.toString();      }  }   package com.google.code.garbagecan.minastudy.sample3;   import java.io.Serializable;   public class MyResponseObject implements Serializable {       private static final long serialVersionUID = 1L;       private String name;            private String value;       public MyResponseObject(String name, String value) {          this.name = name;          this.value = value;      }            public String getName() {          return name;      }       public void setName(String name) {          this.name = name;      }       public String getValue() {          return value;      }       public void setValue(String value) {          this.value = value;      }            @Override     public String toString() {          StringBuffer sb = new StringBuffer();          sb.append("Response [name: " + name  + ", value: " + value + "]");          return sb.toString();      }  }

看看Server端的代码

package com.google.code.garbagecan.minastudy.sample3;   import java.io.IOException;  import java.net.InetSocketAddress;   import org.apache.mina.core.service.IoAcceptor;  import org.apache.mina.core.service.IoHandlerAdapter;  import org.apache.mina.core.session.IdleStatus;  import org.apache.mina.core.session.iOSession;  import org.apache.mina.filter.codec.ProtocolCodecFilter;  import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;  import org.apache.mina.filter.logging.LoggingFilter;  import org.apache.mina.transport.socket.NIO.NioSocketAcceptor;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;   public class MyServer {            private static final Logger logger = LoggerFactory.getLogger(MyServer.class);            public static void main(String[] args) {          IoAcceptor acceptor = new NioSocketAcceptor();           acceptor.getFilterChain().addLast("logger", new LoggingFilter());          acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));           acceptor.setHandler(new IoHandlerAdapter() {                            @Override             public void sessionCreated(IoSession session) throws Exception {              }                            @Override             public void sessionOpened(IoSession session) throws Exception {              }               @Override             public void sessionClosed(IoSession session) throws Exception {              }               @Override             public void sessionIdle(IoSession session, IdleStatus status) throws Exception {              }               @Override             public void exceptionCaught(IoSession session, Throwable cause) throws Exception {                  logger.error(cause.getMessage(), cause);                  session.close(true);              }               @Override             public void messageReceived(IoSession session, Object message) throws Exception {                  logger.info("Received " + message);                  MyRequestObject myReqOjb = (MyRequestObject) message;                  MyResponseObject myResObj = new MyResponseObject(myReqOjb.getName(), myReqOjb.getValue());                  session.write(myResObj);              }               @Override             public void messageSent(IoSession session, Object message) throws Exception {                  logger.info("Sent " + message);              }          });                    try {              acceptor.bind(new InetSocketAddress(10000));          } catch (IOException ex) {              logger.error(ex.getMessage(), ex);          }      }  }

首先创建I/O Service,这里使用的是NioSocketAcceptor类来创建了一个IoAcceptor实例。

创建I/O Filter Chain,这里使用了两个个IoFilter,一个是LoggingFilter用来记录日志和打印事件消息,另一个是ProtocolCodecFilter实例用来编码数据,这里使用了ObjectSerializationCodecFactory类来序列化或反序列化数据成java对象。

创建I/O Handler,这里主要看一下messageReceived方法,其总接收了MyRequestObject对象,然后又发送了一个MyResponseObject对象给Client端。

***就是让IoAcceptor类实例绑定端口实现监听。

看看Client端的代码

package com.google.code.garbagecan.minastudy.sample3;   import java.net.InetSocketAddress;   import org.apache.mina.core.RuntimeIoException;  import org.apache.mina.core.future.ConnectFuture;  import org.apache.mina.core.service.ioconnector;  import org.apache.mina.core.service.IoHandlerAdapter;  import org.apache.mina.core.session.IdleStatus;  import org.apache.mina.core.session.IoSession;  import org.apache.mina.filter.codec.ProtocolCodecFilter;  import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;  import org.apache.mina.filter.logging.LoggingFilter;  import org.apache.mina.transport.socket.nio.NioSocketConnector;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;   public class MyClient {            private static final Logger logger = LoggerFactory.getLogger(MyClient.class);            public static void main(String[] args) {          IoConnector connector = new NioSocketConnector();          connector.setConnectTimeoutMillis(10 * 1000);                    connector.getFilterChain().addLast("logger", new LoggingFilter());          connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));                    connector.setHandler(new IoHandlerAdapter() {                            @Override             public void sessionCreated(IoSession session) throws Exception {              }               @Override             public void sessionOpened(IoSession session) throws Exception {                  MyRequestObject myObj = new MyRequestObject("my name", "my value");                  session.write(myObj);              }               @Override             public void sessionClosed(IoSession session) throws Exception {              }               @Override             public void sessionIdle(IoSession session, IdleStatus status) throws Exception {              }               @Override             public void exceptionCaught(IoSession session, Throwable cause) throws Exception {                  logger.error(cause.getMessage(), cause);                  session.close(true);              }               @Override             public void messageReceived(IoSession session, Object message) throws Exception {                  MyResponseObject myResObj = (MyResponseObject) message;                  logger.info("Received " + myResObj);                  session.close(true);              }               @Override             public void messageSent(IoSession session, Object message) throws Exception {                  logger.info("Sent " + message);              }          });           IoSession session = null;          try {              ConnectFuture future = connector.connect(new InetSocketAddress("localhost", 10000));              future.awaitUninterruptibly();              session = future.getSession();          } catch (RuntimeIoException e) {              logger.error(e.getMessage(), e);          }           session.getCloseFuture().awaitUninterruptibly();          connector.dispose();      }  }

首先创建I/O Service,这里使用的是NioSocketConnector类来创建了一个IoConnector实例,并设置连接超时为10秒。

创建I/O Filter Chain,和服务器端同样设置了两个IoFilter,一个是LoggingFilter用来记录日志和打印事件消息,另一个是ProtocolCodecFilter实例用来编码数据,这里也使用了ObjectSerializationCodecFactory类来序列化或反序列化数据成java对象。

创建I/O Handler,主要看一下sessionOpened方法,其中在会话建立事件中发送了MyRequestObject对象,然后在messageReceived方法中又接受了MyResponseObject对象。

***就是IoConnector实例类连接远端的Server。

下面测试一下上面的程序,首先运行MyServer类,然后运行MyClient类,就可以分别在各自的终端上看到事件日志以及发送/接收的对象了。

看完上述内容,你们掌握Apache MINA中怎么进行对象传输的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Apache MINA中怎么进行对象传输

本文链接: https://www.lsjlt.com/news/288375.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Apache MINA中怎么进行对象传输
    Apache MINA中怎么进行对象传输,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。利用Apache MINA来传递对象,这对了MINA来说非常容易,并且这也是Java网络编...
    99+
    2023-06-17
  • Apache CXF中如何传输Java对象
    这篇文章将为大家详细讲解有关Apache CXF中如何传输Java对象,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。怎样通过CXF来构建最基本的Web Service,并且其中暴露的接口参数...
    99+
    2023-06-17
  • Java Socket怎么传输对象
    这篇文章给大家介绍Java Socket怎么传输对象,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前面两篇文章介绍了怎样建立Java Socket通信,这一篇说一下怎样使用Java Socket来传输对象。首先需要一个...
    99+
    2023-06-17
  • 如何在Python中使用二维码对象进行数据传输?
    在当今数字化的时代,二维码已经成为了一种非常常见的数据传输方式。Python作为一种流行的编程语言,自然也有相应的库可以用来生成和解码二维码。在本篇文章中,我们将会探讨如何在Python中使用二维码对象进行数据传输。 一、生成二维码对象 P...
    99+
    2023-10-23
    响应 二维码 对象
  • Linux中怎么使用ftp命令对文件进行传输
    本篇文章为大家展示了Linux中怎么使用ftp命令对文件进行传输,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  [root@www ~]# yum install ftp 安装ftp支持 RedH...
    99+
    2023-06-13
  • Java Socket中怎样传输压缩对象
    这篇文章将为大家详细讲解有关Java Socket中怎样传输压缩对象,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。上一篇文章说到了用Java Socket来传输对象,但是在有些情况下比如网络...
    99+
    2023-06-17
  • Java Socket使用加密协议进行传输对象的方法
    本文实例讲述了Java Socket使用加密协议进行传输对象的方法。分享给大家供大家参考,具体如下:前面的几篇文章介绍了Socket中一些常见的用法,但是对于一些有安全要求的应用就需要加密传输的数据,此时就需要用到SSLSocket了。还是...
    99+
    2023-05-31
    java socket ava
  • JavaScript中怎么对对象数组进行排序
    这期内容当中小编将会给大家带来有关JavaScript中怎么对对象数组进行排序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。基本数组排序默认情况下,Array.sort函...
    99+
    2024-04-02
  • Java中怎么对参数进行传递
    本篇文章给大家分享的是有关Java中怎么对参数进行传递,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样...
    99+
    2023-05-31
    java ava
  • golang怎么进行对象转换
    Golang是一门非常流行的编程语言,它拥有高效、简洁、安全等特点,在大数据、网络编程和云计算领域都有广泛应用。在Golang中,对象转换也是非常重要的操作之一,如果不熟悉对象转换,将很难完成功能的开发。本文将重点介绍Golang中对象转换...
    99+
    2023-05-14
  • NPM和Apache:如何使用Java对象进行编程?
    随着互联网技术的迅速发展,越来越多的企业开始使用Java作为开发语言。而在Java开发中,有两个非常重要的工具:NPM和Apache。NPM是Node.js的包管理器,而Apache则是一个开源的Web服务器软件。在本文中,我们将探讨如何...
    99+
    2023-08-18
    对象 npm apache
  • 怎么将jquery对象和js对象进行转换
    怎么将jquery对象和js对象进行转换?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有独特的链...
    99+
    2023-06-14
  • PHP面向对象编程怎么对对象进行封装
    这篇文章主要讲解了“PHP面向对象编程怎么对对象进行封装”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP面向对象编程怎么对对象进行封装”吧!我们今天为大家介绍的是关于PHP面向对象编程的...
    99+
    2023-06-17
  • 怎么在java中对对象的类型进行转换
    怎么在java中对对象的类型进行转换?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。对象类型转换分为向上转型和向下转型(强制对象转型)。 向上转型是子对象向父对象转型的过程,例如...
    99+
    2023-05-30
    java
  • 如何在java中使用socket对zip文件进行传输
    今天就跟大家聊聊有关如何在java中使用socket对zip文件进行传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。服务器端程序:import java.io.*;import j...
    99+
    2023-05-31
    java socket zip文件
  • JAVA对象怎么进行初始化
    在Java中,对象可以通过以下几种方式进行初始化:1. 使用new关键字:通过使用new关键字可以创建一个对象,并调用构造方法对对象...
    99+
    2023-09-09
    JAVA
  • Android应用中怎么对接口进行传参
    Android应用中怎么对接口进行传参?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android源码中常用的接口传参实例详解把MyCclass中的参数传到MyDclass ...
    99+
    2023-05-31
    android roi
  • Python怎么使用Netmiko进行文件传输
    传输配置文件、映像文件等是网络设备管理中常见的操作。Netmiko是一个Python库,可用于与各种网络设备进行交互,提供了一些用于传输文件的函数,其中包括SCP(Secure Copy Protocol)函数。Netmiko简介Netmi...
    99+
    2023-05-19
    Python netmiko
  • 怎么进行TCP可靠传输的实现
    本篇文章为大家展示了怎么进行TCP可靠传输的实现,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一.以字节为单位的滑动窗口在TCP里,接收端(B)会给发送端(A)报一个窗口的大小,叫Advertise...
    99+
    2023-06-03
  • 怎么将JS对象与jQuery对象进行相互转换
    这篇文章主要介绍了怎么将JS对象与jQuery对象进行相互转换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.jQuery对象转换为JS原生对象<body>&n...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作