服务端代码
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import java.util.Date;
import org.apache.log4j.Logger;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
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.textline.LineDelimiter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.DatagramSessionConfig;
import org.apache.mina.transport.socket.nio.NioDatagramAcceptor;
public class ServerHandler extends IoHandlerAdapter {
private static Logger logger = Logger.getLogger(ServerHandler.class);
public ServerHandler() throws IOException {
NioDatagramAcceptor acceptor = new NioDatagramAcceptor();
acceptor.setHandler(this);
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
chain.addLast("logger", new LoggingFilter());
chain.addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"),
LineDelimiter.NUL, LineDelimiter.NUL)));
DatagramSessionConfig dcfg = acceptor.getSessionConfig();
dcfg.setReuseAddress(true);
acceptor.bind(new InetSocketAddress(1234));
}
public void messageReceived(IoSession session, Object message)
throws Exception {
System.out.println(message.toString() + ":" + new Date());
}
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
logger.error("MINA发生异常:", cause);
}
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
}
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
super.sessionIdle(session, status);
}
public static void main(String[] args) throws IOException {
new ServerHandler();
}
}
客户端代码
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.log4j.Logger;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.future.IoFuture;
import org.apache.mina.core.future.IoFutureListener;
import org.apache.mina.core.service.IoHandlerAdapter;
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.LoggingFilter;
import org.apache.mina.transport.socket.DatagramConnector;
import org.apache.mina.transport.socket.nio.NioDatagramConnector;
public class Client extends IoHandlerAdapter {
private static Logger logger = Logger.getLogger(Client.class);
DatagramConnector connector;
IoSession session;
public Client() {
connector = new NioDatagramConnector();
connector.setHandler(this);
DefaultIoFilterChainBuilder chain = connector.getFilterChain();
chain.addLast("logger", new LoggingFilter());
chain.addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"),
LineDelimiter.NUL, LineDelimiter.NUL)));
IoFuture connFuture = connector.connect(new InetSocketAddress(
"127.0.0.1", 1234));
connFuture.addListener(new IoFutureListener() {
public void operationComplete(IoFuture future) {
ConnectFuture connFuture = (ConnectFuture) future;
if (connFuture.isConnected()) {
session = future.getSession();
try {
sendData();
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
logger.error("Not connected...exiting");
}
}
});
}
private void sendData() throws InterruptedException {
session.write("测试数据发送!");
}
public static void main(String[] args) {
new Client();
}
}
分享到:
相关推荐
一个mina的可运行的udp demo(java工程),自己根据网上的资源整合的,包括一个客户端和一个服务器,非常适合新手入门
Android Mina UDP数据交互。 资源提供客户端为Android 工程,服务端为普通的Java工程的数据交互示例。
使用MINA自带的心跳协议编写的心跳的Demo
资源提供Android Mina UDP 所需jar包
mina实现UDP协议的代码,学习Mina的可以研究一下,对学习有好处的
本源码是《NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示》一文的MINA2服务端源码实现,详见:http://www.52im.net/thread-373-1-1.html
本源码是《NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示》一文的Java客户端源码实现,详见:http://www.52im.net/thread-373-1-1.html
望大家不吝批评指教,本人常年从事JAVA软件开发,有丰富的MINA通信软件开发经验,现在已经有成熟的底层框架(结合了反射、DynaBean、Spring等多种技术),可以实现程序自动对上位机和下位机之间的通信协议进行解析,...
mina框架的demo 入门,开发 学习
mina的即时聊天demo,demo里自由一个通过控制台实现的服务端和客户端,主要是实现mina的流程,运用到android中小改下就可以了!
Mina网络通信开发Demo,Mina客户端服务器Demo,很好的代码学习资料
公司需求,做的简单的Demo,可以拓展,Mina自定义协议简单实现,象征性得收取2积分
mina demo
最近做rfid读写,C#和java都用udp不用厂家的动态库,udp自己写也简单,但是试了一下Apache mina ,接收的不是string,二十byte[] 数组,简单实现了UDP,网上也有例子,但是不是我要的。可用。
服务端为mina 本地环境内网已测通。 测试环境为内网连接公网,公网连接公网可通。 如果测试不通 1.请检查端口服务类型(服务端端口是TCP/UDP)。 2.检查网络环境。 3.默认回车换行断包。所以注意发送内容后面...
基于MINA架构实现的UDP接收服务器,支持对mysql数据库的连接池插入查找操作。数据接收采用MINA,处理使用线程池并结合数据库连接池实现对发送数据的储存。
mina通信协议文档及实例,内含说明文档及实例,长短连接
Android手机端做服务器和客户端,使用MINA通信的demo,通过Demo可以清晰的看到Android平台使用Mina框架处理Socket通信的方法。
自己写的demo,完成了mina的双向通信功能,比较简单的一个demo,扩展性强
Apache组织应用程序(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。mina经典demo,希望对后来人有所帮助