`
talentluke
  • 浏览: 591417 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MINA的UDP协议demo

 
阅读更多

 

服务端代码

 

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

    一个mina的可运行的udp demo(java工程),自己根据网上的资源整合的,包括一个客户端和一个服务器,非常适合新手入门

    Android Mina UDP数据交互

    Android Mina UDP数据交互。 资源提供客户端为Android 工程,服务端为普通的Java工程的数据交互示例。

    MINA 心跳协议Demo

    使用MINA自带的心跳协议编写的心跳的Demo

    Android Mina UDP 所需jar包.rar

    资源提供Android Mina UDP 所需jar包

    udp.rar_MINA udp_android mina UDP_mina_mina u

    mina实现UDP协议的代码,学习Mina的可以研究一下,对学习有好处的

    服务端基于MINA2的UDP双向通信Demo演示(MINA2服务端)

    本源码是《NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示》一文的MINA2服务端源码实现,详见:http://www.52im.net/thread-373-1-1.html

    服务端基于MINA2的UDP双向通信Demo演示(Java客户端)

    本源码是《NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示》一文的Java客户端源码实现,详见:http://www.52im.net/thread-373-1-1.html

    使用MINA进行UDP通信实现数据导入

    望大家不吝批评指教,本人常年从事JAVA软件开发,有丰富的MINA通信软件开发经验,现在已经有成熟的底层框架(结合了反射、DynaBean、Spring等多种技术),可以实现程序自动对上位机和下位机之间的通信协议进行解析,...

    mina框架的demo 入门,开发

    mina框架的demo 入门,开发 学习

    mina即时聊天demo

    mina的即时聊天demo,demo里自由一个通过控制台实现的服务端和客户端,主要是实现mina的流程,运用到android中小改下就可以了!

    Mina客户端服务器Demo

    Mina网络通信开发Demo,Mina客户端服务器Demo,很好的代码学习资料

    Mina自定义协议简单实现

    公司需求,做的简单的Demo,可以拓展,Mina自定义协议简单实现,象征性得收取2积分

    minaDemo的实例

    mina demo

    Apache MINA java UDP例子|byte数组

    最近做rfid读写,C#和java都用udp不用厂家的动态库,udp自己写也简单,但是试了一下Apache mina ,接收的不是string,二十byte[] 数组,简单实现了UDP,网上也有例子,但是不是我要的。可用。

    Mina TCP长连接服务与UDP服务

    服务端为mina 本地环境内网已测通。 测试环境为内网连接公网,公网连接公网可通。 如果测试不通 1.请检查端口服务类型(服务端端口是TCP/UDP)。 2.检查网络环境。 3.默认回车换行断包。所以注意发送内容后面...

    mina UDP 数据库连接池

    基于MINA架构实现的UDP接收服务器,支持对mysql数据库的连接池插入查找操作。数据接收采用MINA,处理使用线程池并结合数据库连接池实现对发送数据的储存。

    mina通信协议文档及实例

    mina通信协议文档及实例,内含说明文档及实例,长短连接

    Mina通信Demo

    Android手机端做服务器和客户端,使用MINA通信的demo,通过Demo可以清晰的看到Android平台使用Mina框架处理Socket通信的方法。

    mina双向通信demo

    自己写的demo,完成了mina的双向通信功能,比较简单的一个demo,扩展性强

    mina经典demo

    Apache组织应用程序(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。mina经典demo,希望对后来人有所帮助

Global site tag (gtag.js) - Google Analytics