`
pan_java
  • 浏览: 287152 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Mina服务器端启动 -- 1

阅读更多
  SocketAcceptor acceptor = new NioSocketAcceptor();


 public NioSocketAcceptor() {
        
    	
    	super(new DefaultSocketSessionConfig(), NioProcessor.class);
        
        //初始化前面设置在AbstractIoService 中的  sessionConfig
        ((DefaultSocketSessionConfig) getSessionConfig()).init(this);
 }


  protected AbstractPollingIoAcceptor(IoSessionConfig sessionConfig,
            Class<? extends IoProcessor<T>> processorClass) {
    	// new SimpleIoProcessorPool 新建 processor -- 处理线程
        this(sessionConfig, null, new SimpleIoProcessorPool<T>(processorClass),
                true);
}



//绑定端口  
acceptor.bind(new InetSocketAddress(PORT));


AbstractIoAcceptor 的 public final void bind(Iterable<? extends SocketAddress> localAddresses) 方法中

boundAddresses.addAll(bindInternal(localAddressesCopy));

    protected final Set<SocketAddress> bindInternal(
            List<? extends SocketAddress> localAddresses) throws Exception {
        // Create a bind request as a Future operation. When the selector
        // have handled the registration, it will signal this future.
        AcceptorOperationFuture request = new AcceptorOperationFuture(
                localAddresses);

        // adds the Registration request to the queue for the Workers
        // to handle
        //添加请求到注册列表
        registerQueue.add(request);

        // creates the Acceptor instance and has the local
        // executor kick it off.
        //开始用线程监听通道
        startupAcceptor();
        
        // As we just started the acceptor, we have to unblock the select()
        // in order to process the bind request we just have added to the 
        // registerQueue.
        wakeup();
        
        // Now, we wait until this request is completed.
        request.awaitUninterruptibly();

        if (request.getException() != null) {
            throw request.getException();
        }

        // Update the local addresses.
        // setLocalAddresses() shouldn't be called from the worker thread
        // because of deadlock.
        Set<SocketAddress> newLocalAddresses = new HashSet<SocketAddress>();
        
        for (H handle:boundHandles.values()) {
            newLocalAddresses.add(localAddress(handle));
        }

        return newLocalAddresses;
    }


startupAcceptor 中启动了一个 Acceptor 启动Socket服务




分享到:
评论

相关推荐

    MINA 服务器端实现 可运行

    在本项目中,"MINA_Server_Test"是一个实现了MINA服务器端功能的可运行示例。 首先,我们来详细了解一下MINA的核心概念和架构: 1. **异步事件驱动**:MINA采用非阻塞I/O模型,即NIO(New IO)模式,通过Selector...

    apache-mina-2.0.16

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发服务器端和客户端的网络应用。标题"apache-mina-2.0.16"表明我们讨论的是...

    Mina中文参考手册-API

    Mina框架封装了网络通信的Server端和Client端,允许开发者在不关心底层网络通信细节的情况下,通过简单的API进行数据的发送与接收。Mina的主要组件包括以下几个: 1. IoService:负责套接字的建立,并且拥有自己的...

    apache-mina-2.0.2-bin.tar.gz

    - **服务器端开发**:例如,开发基于TCP的聊天服务器、文件传输服务器等。 - **客户端库**:用于与远程服务进行通信,如实现SSH客户端、FTP客户端等。 - **物联网(IoT)**:Mina的高效和轻量级特性使其适用于设备...

    mina2-http-demo

    1. **配置ServerBootstrap**:这是MINA服务器端的基础配置对象,用于设置线程池、管道工厂等关键属性。在"mina2-http-demo"中,我们需要创建一个ServerBootstrap实例,然后配置NioSelectorProvider以支持非阻塞I/O。...

    mina 服务器socket客服端发消息

    1. **初始化ServerBootstrap**:首先,我们需要创建一个`ServerBootstrap`对象,它是Mina服务器的核心配置类。 2. **设置通道处理链**:通过`pipeline()`方法设置`ChannelPipeline`,它定义了事件的处理流程。一般会...

    MINA加jar打包文件

    2. **创建服务端和客户端**:通过MINA API设置服务器端监听端口,客户端连接服务器端。 3. **实现业务逻辑**:定义会话处理器,处理接收到的数据或发送数据。 4. **配置和启动**:使用Spring配置文件管理MINA组件...

    mina客户端服务器简易Demo

    Mina服务器端主要负责监听网络连接、接收客户端请求并发送响应。在这个Demo中,服务器端通常会包含以下组件: 1. **ServerBootstrap**: 这是服务器启动的核心类,用于配置服务器的参数,如绑定端口、选择NIO或BIO...

    apache mina-spring 服务端程序

    2. **服务端入口类**:启动Mina服务器的Java类,通常会包含Spring容器的初始化和网络监听端口的设置。 3. **业务处理器**:实现了Mina的IoHandler接口,处理来自客户端的事件和数据。 4. **协议编码解码器**:用于将...

    Mina客户端服务器Demo

    1. 如何配置和启动Mina服务器,监听和处理客户端连接。 2. 如何在客户端创建连接,并发送和接收数据。 3. 理解Mina的过滤器机制,以及如何编写自定义过滤器。 4. 实践数据编码和解码的过程,理解ProtocolCodec的使用...

    mina服务器实例

    - **src/main/java**:存放服务器端的Java源代码,包括IoAcceptor的配置、过滤器链的定义和处理器的实现。 - **src/main/resources**:可能包含配置文件,如log4j配置,或者自定义的协议编码解码类的XML配置。 - **...

    深入理解Apache_Mina_(5)----_配置Mina的线程模型[归类].pdf

    Acceptor线程在调用`Acceptor.bind()`方法后启动。每个Acceptor只有一个Acceptor线程,由Mina自动创建,无法进行配置。 2. **Connector Thread**:在客户端端,对应的线程模型称为Connector thread。它的功能与...

    mina服务器简单代码示例

    Mina服务器是一个基于Java开发...通过学习这个简单的代码示例,你可以掌握如何启动Mina服务器,以及如何处理客户端的连接和数据交换。这对于开发网络应用,特别是需要高效处理大量并发连接的场景,具有重要的实践价值。

    mina作为服务器的用法

    Mina支持多种协议,如TCP/IP、UDP、SSL/TLS等,因此常用于构建服务器端应用,如HTTP服务器、FTP服务器、聊天服务器等。 标题“mina作为服务器的用法”表明我们将探讨如何使用Mina框架来搭建和操作服务器。这个主题...

    mina-master_mina_

    标题中的"mina-master_mina_"可能指的是一个MINA项目或示例的主分支,可能包含了服务器端的核心代码和配置。描述中提到的"mina 服务端的简单应用,直接部署可以使用"表明这个压缩包包含了一个能够快速运行的MINA...

    mina2 cs 客户端服务器通信 已经实现完整通信代码

    1. **创建服务器端**: - 初始化Acceptor,指定监听的端口号。 - 实现IoHandler接口,定义服务器接收到消息后的处理逻辑。 - 启动Acceptor,开始监听客户端连接。 2. **创建客户端**: - 初始化Connector,指定...

    Mina官网例子之时间服务器

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

    3本mina教程和mina帮助文档

    2. **Apache_Mina_Server_2%5B1%5D.0%E4%B8%AD%E6%96%87%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8CV1.0.pdf**:这是一份中文版的Apache Mina Server 2.0.0教程,可能涵盖了如何配置和使用Mina服务器端的基本概念、配置...

    mina编解码器Demo

    首先,我们需要启动`mina_server`,这通常是通过运行包含服务器端逻辑的主类实现的,服务器端会监听指定的端口,等待客户端连接。服务器启动后,它会使用预定义的编解码器来处理接收到的数据。 接着,我们启动`mina...

    Android-基于ApacheMINA进行封装实现AndroidAPP作为服务器客户端进行通讯

    这个文件名可能是项目的Git仓库名称,其中“cuihp”可能是开发者的用户名,“AndroidServer”表明这是一个关于Android服务器端的项目,而“4931b93”可能是某个版本或提交的哈希值。这个项目可能包含源代码、配置...

Global site tag (gtag.js) - Google Analytics