`
talentluke
  • 浏览: 604743 次
  • 性别: 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详解** Mina (Java Invented Network Application Platform) 是一款强大的网络通信框架,主要用于构建高性能、高可用性的网络应用。它提供了一种简单的方式来处理TCP/IP和UDP/IP协议,使得开发者...

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

    “服务端基于MINA2的UDP双向通信Demo演示(MINA2服务端)” 这个标题表明这是一个使用MINA2框架在服务端实现的UDP(User Datagram Protocol)双向通信的示例代码。MINA2是一个开源的Java网络应用程序框架,它简化了...

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

    标题中的“服务端基于MINA2的UDP双向通信Demo演示(Java客户端)”是指使用Apache MINA框架在Java中实现的UDP(用户数据报协议)的双向通信示例。MINA是一个高性能、异步的网络应用程序框架,常用于构建网络服务,如...

    Mina框架使用demo

    在Java世界里,Mina因其异步事件驱动模型而受到广泛的青睐,它简化了TCP/IP和UDP协议编程,使得开发者可以专注于业务逻辑,而无需关心底层网络通信的细节。在这个"Mina框架使用demo"中,我们将深入探讨如何利用Mina...

    mina即时聊天demo

    它提供了一个高度可扩展的、高性能的、事件驱动的I/O服务架构,广泛应用于各种网络协议的实现,如TCP/IP、UDP/IP以及HTTP等。在本“mina即时聊天demo”中,我们可以通过学习如何利用Mina来构建一个简单的即时聊天...

    Apache mina2学习笔记DEMO

    MINA 提供了一套高级的网络通信抽象层,简化了开发过程,特别是对于处理TCP/IP和UDP/IP协议栈的应用。MINA的核心概念是事件驱动和非阻塞I/O,这使得它在处理大量并发连接时表现出色。 在这个"Apache MINA2学习笔记...

    mina HTTP协议实例

    它的设计目标是简化网络编程,特别是TCP/IP和UDP/IP等基于套接字的网络协议的处理。通过MINA,我们可以方便地创建服务器端和客户端应用,支持多种传输层协议,包括HTTP。 在MINA中实现HTTP协议,我们需要理解HTTP...

    Mina客户端服务器Demo

    Apache Mina是一个高度可扩展且轻量级的Java框架,主要用于构建高性能、高效率的网络应用程序,如TCP/IP和UDP通信、SSL加密通信等。在Mina中,客户端和服务器的交互基于事件驱动模型,使得处理网络连接变得高效且...

    mina客户端服务器简易Demo

    Apache Mina(Minimum Asynchronous Network)是一个开源的网络通信框架,它为Java开发者提供了一种简单而高效的方式来构建高性能、高可用性的网络应用程序,如TCP/IP和UDP/IP协议的应用。在本示例中,我们将深入...

    mina2推送demo客户端

    本文将围绕MINA2推送Demo客户端进行深入解析,以"echo_client_udp"为例,讲解如何利用MINA2实现一个简单的UDP回显客户端,并探讨其在实际应用中的价值。 1. MINA2基本概念: MINA2的核心概念包括Session、Filter和...

    Mina测试的demo

    在创建Mina服务器时,我们需要配置一个`ServerBootstrap`实例,设置传输层(如NIO或UDP),然后指定一个`Handler`,该Handler将处理接收到的I/O事件。例如: ```java ServerBootstrap b = new ServerBootstrap(); b...

    mina框架的demo 入门,开发

    通过学习和实践Mina框架,你可以构建高效、可靠的网络应用程序,如TCP/UDP服务器、聊天室、文件传输系统等。Mina框架的强大之处在于它的灵活性和扩展性,你可以根据需求添加更多的过滤器,实现更复杂的功能,比如...

    Mina开发实例(服务端、客户端)DEMO

    在Java世界中,Mina以其简洁的API和灵活性而受到青睐,尤其适用于处理大量的并发连接,如TCP/IP和UDP协议。在这个"Mina开发实例(服务端、客户端)DEMO"中,我们将深入探讨Mina如何实现长连接通讯。 首先,我们来...

    mina demo全套

    Mina的核心概念是它支持多种协议,如TCP、UDP等,这使得它在开发跨平台的网络应用时具有广泛的应用场景。 本资源"mina demo全套"包含了一系列的示例代码,用于演示如何使用Apache Mina进行网络通信。这些示例涵盖了...

    Mina通信Demo

    **Mina通信Demo详解** Mina(全称:Minimum APT for Network Application)是一个高度可扩展的、高性能的网络通信框架,广泛应用于Java平台上。在Android开发中,Mina可以帮助开发者构建TCP/IP和UDP网络应用,尤其...

    Mina小Demo聊天工具

    Apache Mina是一个高度可扩展的网络应用框架,主要用于简化网络服务的开发,如TCP/IP和UDP协议的处理。Mina提供了异步的事件驱动模型,使得开发者能够更高效地处理网络I/O操作。在Mina小Demo中,Mina作为底层通信...

    mina 聊天Demo

    它支持多种协议,如TCP/IP、UDP/IP和HTTP,并且适用于Java NIO(非阻塞I/O)模型,这使得Mina在高并发环境下表现出色。 2. **Mina的核心组件** - **Session**:在Mina中,Session代表了服务端和客户端之间的连接。...

    Mina 使用DEMO

    - **协议无关性**:Mina 提供了对多种网络协议的支持,如TCP/IP、UDP、SSL/TLS等,开发者可以根据需求选择合适的协议。 ### 2. Mina 工作流程 1. **服务端启动**:创建一个Acceptor,配置监听的端口号,然后启动...

    Android使用Mina与服务器通信Demo(包括服务端)

    Mina(Minimum Asynchronous Network)是一个高度可扩展的、高性能的网络应用开发框架,常用于构建基于TCP和UDP的网络应用,如服务器和客户端。在Android平台上,Mina可以帮助开发者实现与远程服务器的高效、异步...

    mina+springmvc demo

    Apache Mina是一个高度可扩展的网络通信框架,适用于TCP/IP和UDP/IP协议,而Spring MVC是Spring框架的一部分,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。 描述中的链接指向了一个CSDN博客文章,作者...

Global site tag (gtag.js) - Google Analytics