`

mina 简单server端例子

    博客分类:
  • mina
阅读更多
jar包依赖:
	<dependency>
	    <groupId>org.apache.mina</groupId>
	    <artifactId>mina-core</artifactId>
	    <version>2.0.7</version>
	</dependency> 
	<dependency>
	    <groupId>log4j</groupId>
	    <artifactId>log4j</artifactId>
	    <version>1.2.17</version>
	</dependency>
	<dependency>
	    <groupId>org.slf4j</groupId>
	    <artifactId>slf4j-log4j12</artifactId>
	    <version>1.7.6</version>
	</dependency>
	<dependency>
	    <groupId>org.slf4j</groupId>
	    <artifactId>slf4j-api</artifactId>
	    <version>1.7.6</version>
	</dependency>



另外还需要一个log4j.properties配置文件



server类:
		IoAcceptor accepter = new NioSocketAcceptor();
		ProtocolCodecFilter coderFilter = new ProtocolCodecFilter(
				new TextLineCodecFactory(Charset. forName("UTF-8")));
		/*
		 * 添加filter
		 * filter在DefaultIoFilterChainBuilder中是以list存储的
		 * 	   private final List<Entry> entries;这里的Entry是DefaultFilterChain里
		 * 自定义的Entry: private class EntryImpl implements Entry{...}
		 * 可以调用addFirst,addLast,addAfter,addBefore方法进行添加filter,不同的方法
		 * 添加filter位置不同,执行的顺序不同,FilterChain按方法计算index将filter有序存储
		 * 所有添加的filter 要保证名字唯一
		 */
		accepter.getFilterChain().addLast("a", new LoggingFilter());
		accepter.getFilterChain().addLast("b",coderFilter);
		
		/*
		 * 设置消息处理类,必须,否则抛异常
		 * 继承IoHandlerAdapter类即可,重写messageReceived方法
		 * 对client消息进行处理
		 */
		accepter.setHandler(new MyServerHandler());
		
		//设置session参数
		accepter.getSessionConfig().setReadBufferSize(1024);
		accepter.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);
		
		/*
		 * 绑定到某个socket端口,具体绑定是开启一个nio socket channel
		 * 启动调用顺序
		 * accepter的bind方法调用bindInternal方法,
		 * 	bindInternal调用startupAcceptor方法
		 * startupAcceptor方法中会启动一个线程对chanel进行select监听,
		 * org.apache.mina.core.polling.AbstractPollingIoAcceptor.Acceptor 线程监听类
		 * 
		 * org.apache.mina.transport.socket.nio.NioSocketAcceptor
	     *  .open(SocketAddress localAddress)方法源码
		 *
		 *protected ServerSocketChannel open(SocketAddress localAddress) throws Exception {
	        ServerSocketChannel channel = ServerSocketChannel.open();
	        boolean success = false;
	        try {
	            channel.configureBlocking(false);
	            ServerSocket socket = channel.socket();
	            socket.setReuseAddress(isReuseAddress());
	            socket.bind(localAddress, getBacklog());
	            channel.register(selector, SelectionKey.OP_ACCEPT);
	            success = true;
	        } finally {
	            if (!success) {
	                close(channel);
	            }
	        }
		 */
		accepter.bind(new InetSocketAddress(8484));
		
		/*
		 * 启动后可telnet本机该端口进行测试
		 * >telnet 127.0.0.1 8484
		 * 连接后随便输入东西进行测试,信心怎么处理就看上面自定义的handler
		 */


自定义handler重新messageReceived方法:
  
 @Override
    public void messageReceived( IoSession session, Object message ) throws Exception
    {
        String str = message.toString();
        System.out.println(str);
        if( str.trim().equalsIgnoreCase("quit") ) {
            session.close(true);
            return;
        }

        Date date = new Date();
        session.write( date.toString() );
    }
分享到:
评论

相关推荐

    Mina实现RPC的例子

    3. **创建Server端**:利用Mina创建一个服务器端,监听指定的端口,并绑定我们的服务实现。Mina中的Acceptor负责接受连接请求。 ```java ServerBootstrap bootstrap = new ServerBootstrap(); bootstrap.group...

    Mina官网例子之时间服务器

    - **Server端**:在时间服务器中,Mina会创建一个Acceptor,监听特定的端口,等待客户端连接。当客户端连接建立后,Acceptor会创建一个Session对象,用于管理与该客户端的通信。然后,一个自定义的过滤器(例如,...

    Mina例子包含与spring整合

    &lt;bean id="minaServer" class="org.apache.mina.core.service.SimpleIoAcceptor"&gt; &lt;bean class="org.apache.mina.core.session.IdleStatus"&gt; &lt;!-- 设置心跳检查的空闲状态 --&gt; ...

    Apache_Mina_Server_2.0中文参考手册

    一个简单的TCPServer示例代码会涉及到IoService的编写。在编写IoService时,可以使用IoAcceptor接口的实现类NioSocketAcceptor,它实际上底层是通过java.nio.channels.ServerSocketChannel类创建的。如果想要更高的...

    Mina2.0.0_RC1 例子

    src源码包下的test.mina.server.StartServer.java是启动服务器 test源码包下的socket.client.StartClient.java是启动客户端 日志记录在log目录下 lib下有完整的引用jar包 下载后记得评论和评分啊,可以返回资源分,...

    mina 服务器开发例子

    接下来,我们来看看如何创建一个简单的Mina服务器。首先,我们需要引入Mina的依赖库。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;org.apache.mina &lt;artifactId&gt;mina-core &lt;version&gt;...

    spring boot 整合mina 串口

    这个例子中,我们创建了一个可直接运行的Spring Boot项目,通过配置文件指定串口参数,然后利用Mina进行串口通信。注意,实际应用中需要根据具体需求调整配置和处理逻辑。希望这个例子能帮助你节省时间,避免在整合...

    mina开发步骤

    接下来是创建一个简单的服务器端示例——`Demo1Server`。该类中包含了创建服务器的基本步骤,具体实现如下: ```java package test.service; import java.net.InetSocketAddress; import java.nio.charset.Charset...

    Apache mina框架入门教程

    在Mina 2.0版本中,框架分为Server端和Client端,两者都在通信结构中扮演着类似的角色,将网络通信与业务逻辑分离,使得开发者可以专注于数据处理和业务实现。Mina 的执行流程主要包括以下几个关键组件: 1. **...

    Mina NIO Socket

    public class MinaServer { public static void main(String[] args) throws Exception { EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ...

    mina中文开发手册.pdf

    Mina框架中包括了对服务端(Server)和客户端(Client)的封装,使得构建网络通信应用变得简单易行。 Mina框架的核心组件和流程包括以下几个部分: 1. IoService:这是负责建立套接字连接的接口,在单一线程上运行...

    Android MiNa 通讯实现

    这个例子将详细介绍如何在Android环境中实现MiNa进行文本传输。 ### 1. MiNa核心概念 MiNa基于Java的NIO(Non-blocking I/O)模型,提供了事件驱动、非阻塞I/O的网络通信库。主要包含以下几个核心组件: - **...

    HPsocket 封包与mina对接

    Apache Mina是一个面向网络应用程序的高级、可伸缩、简单、快速的异步I/O框架。为了与HPsocket进行对接,需要在Mina中设置相应的过滤器和处理器。 1. **创建IoConnector**:首先,创建一个`NioSocketConnector`实例...

    mina入门程序

    总结起来,通过`MinaServer`这个简单的例子,我们可以了解到Mina框架的基本使用方法,包括创建服务器、配置处理器、管理会话和数据流。随着对Mina的深入学习,你将能够构建更复杂的网络应用程序,如FTP服务器、聊天...

    niosocket及其开源框架MINA学习总结收集.pdf

    public class Minaserver { public static void main(String[] args) throws Exception { IoAcceptor acceptor = new NioSocketAcceptor(); acceptor.getFilterChain().addLast("logger", new LoggingFilter());...

    安卓文件下载上传解压相关-android上的ftp服务器例子通过ApacheFtpServer实现依赖以下jar包commons-net-ftp-2.0.jarftpserver-core-1.0.6.jarlog4j-1.2.14.jarmina-core-2.0.4.jarslf4j-api-1.5.2.jarslf4j-log4j12-1.5.2.jar.zip

    android 上的ftp服务器例子,通过ApacheFtpServer实现,依赖以下jar包: commons-...,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android C/S结构代码

    Apache Mina的核心理念是提供一种抽象层,将复杂的网络编程模型转化为简单的事件驱动模型,开发者可以通过编写处理器来处理网络事件,如数据接收和发送。Mina提供了异步I/O模型,可以有效地处理大量并发连接,提高...

Global site tag (gtag.js) - Google Analytics