使用mina框架传输对象实体方法如下:
对像实体
public class TransDataEntity {
private String md5;
private String path;
private String fromIP;
private byte[] filedata;
public String getMd5() {
return md5;
}
public void setMd5(String md5) {
this.md5 = md5;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public String getFromIP() {
return fromIP;
}
public void setFromIP(String fromIP) {
this.fromIP = fromIP;
}
public byte[] getFiledata() {
return filedata;
}
public void setFiledata(byte[] filedata) {
this.filedata = filedata;
}
}
服务端处理类
import org.apache.mina.core.filterchain.IoFilterAdapter;
import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
public class ServerHandler extends IoFilterAdapter implements IoHandler {
private static ServerHandler samplMinaServerHandler = null;
public static ServerHandler getInstances() {
if (null == samplMinaServerHandler) {
samplMinaServerHandler = new ServerHandler();
}
return samplMinaServerHandler;
}
private ServerHandler() {
}
// 当连接后打开时触发此方法,一般此方法与 sessionCreated 会被同时触发
public void sessionOpened(IoSession session) throws Exception {
}
public void sessionClosed(IoSession session) {
}
public void messageReceived(IoSession session, Object message) throws Exception {
if (message instanceof TransDataEntity) {
TransDataEntity text = (TransDataEntity) message;
System.out.println("服务器接收到从客户端的getFromIP:" + text.getFromIP());
System.out.println("服务器接收到从客户端的getMd5:" + text.getMd5());
System.out.println("服务器接收到从客户端的getPath:" + text.getPath());
System.out.println("服务器接收到从客户端的文件内容:" + new String(text.getFiledata(), "GBK"));
}
}
public void exceptionCaught(IoSession arg0, Throwable arg1) throws Exception {
}
// 当消息传送到客户端后触发
public void messageSent(IoSession arg0, Object arg1) throws Exception {
}
// 当一个新客户端连接后触发此方法.
public void sessionCreated(IoSession arg0) throws Exception {
}
// 当连接空闲时触发此方法.
public void sessionIdle(IoSession arg0, IdleStatus arg1) throws Exception {
}
}
服务端程序
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import com.koubei.syn.utils.ConfigUtils;
public class MainServer {
private static MainServer mainServer = null;
private SocketAcceptor acceptor = new NioSocketAcceptor();
private DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
private int bindPort = ConfigUtils.PORT;
public static MainServer getInstances() {
if (null == mainServer) {
mainServer = new MainServer();
}
return mainServer;
}
private MainServer() {
chain.addLast("myChin", new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
acceptor.setHandler(ServerHandler.getInstances());
try {
acceptor.bind(new InetSocketAddress(bindPort));
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
MainServer.getInstances();
}
}
客户段处理类
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class ClientHandler extends IoHandlerAdapter {
private static ClientHandler samplMinaClientHandler = null;
public static ClientHandler getInstances() {
if (null == samplMinaClientHandler) {
samplMinaClientHandler = new ClientHandler();
}
return samplMinaClientHandler;
}
private ClientHandler() {
}
public void sessionOpened(IoSession session) throws Exception {
session.write("客户端与服务器的会话打开了……");
}
public void sessionClosed(IoSession session) {
}
public void messageReceived(IoSession session, Object message) throws Exception {
}
public void messageSent(IoSession session, Object tdEntity) throws Exception {
if (null != tdEntity){
session.write(tdEntity);
}
System.out.println("客户端已经向服务器发送了:");
}
}
客户端
import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import com.koubei.syn.utils.ConfigUtils;
public class MainClient {
private static MainClient mainClient = null;
NioSocketConnector connector = new NioSocketConnector();
DefaultIoFilterChainBuilder chain = connector.getFilterChain();
public static MainClient getInstances() {
if (null == mainClient) {
mainClient = new MainClient();
}
return mainClient;
}
private MainClient() {
}
/**
* @author 展俊
* @description 客户端传数据给服务器端
* @param groupips ip数组 127.0.0.1,127.0.0.2 ...
* @param msg 数据实体
*
*/
public void messgeSent(String[] groupips, Object msg) {
chain.addLast("myChin", new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
connector.setHandler(ClientHandler.getInstances());
connector.setConnectTimeoutMillis(30);
if ((null != groupips) && (groupips.length > 0)) {
try {
for (String ip : groupips) {
ConnectFuture cf = connector.connect(new InetSocketAddress(ip, ConfigUtils.PORT));
connector.getHandler().messageSent(cf.getSession(), msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
mina mina传输对象的示例 mina框架 mina示例
Mina框架+常用JAR包 Mina框架+常用JAR包 Mina框架+常用JAR包 Mina框架+常用JAR包 Mina框架+常用JAR包 Mina框架+常用JAR包
apache mina 框架的学习文档,通过此文档可以基本了解mina框架。
java mina框架
mina的高级使用,mina文件图片传送,
Android端集成Mina框架实现长连接,完美解决断线重连问题,修复断线重连打开多端口问题。
pache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性...
通讯层使用Mina实现一服务器多客户端的通信,可以修改成一个群体聊天室。Mina是手游开发常用的nio通讯框架,长连接优先使用Mina。希望对你有所帮助!
我自己写的使用mina框架实现cmpp2.0服务端,经过一段使用解决了几个bug现在比较稳定。
该文档较好的介绍了,apache mina框架的使用方法。
apache mina 框架 实例 自定义协议包 自定义编码器 解码器 服务端 客户端
apache-mina-2.0.4 mina框架的源码及jar包
详细介绍mina框架的各个组成部分、服务器端的开发、客户端开发。并根据本人在工程项目中使用的代码,详细讲解了服务器端是客户端实现。实现了json格式的通信、以及文件的上传于下载等功能。图文并茂,以开发者的角度...
要实现mina框架最基本的资源包,拥有这个就可以实现mina的通讯
nio的经典框架mina 在此基础上发展的netty是nio经典之中的经典
mina框架的demo 入门,开发 学习
Java_NIO基础教程、MINA教程, 并附上基于springboot 整合mina的基础平台框架,可以直接使用,也可以借鉴下
使用MINA框架来开发的网络应用程序代码结构更清晰;MINA框架完成了底层的线程管理;MINA内置的编码器可以满足大多数用户的需求,省去了开发人员消息编码解码的工作。
Mina框架研究与实现 Mina框架研究与实现
阻塞和非阻塞io的简单通信程序,自己写的(写的不好)放这里做个备份 博文链接:https://javag.iteye.com/blog/221595