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_Server_Test"是一个实现了MINA服务器端功能的可运行示例。 首先,我们来详细了解一下MINA的核心概念和架构: 1. **异步事件驱动**:MINA采用非阻塞I/O模型,即NIO(New IO)模式,通过Selector...
Apache MINA(Multipurpose Infrastructure for Network Applications)是一个高性能、异步事件驱动的网络应用程序框架,主要用于简化开发服务器端和客户端的网络应用。标题"apache-mina-2.0.16"表明我们讨论的是...
Mina框架封装了网络通信的Server端和Client端,允许开发者在不关心底层网络通信细节的情况下,通过简单的API进行数据的发送与接收。Mina的主要组件包括以下几个: 1. IoService:负责套接字的建立,并且拥有自己的...
- **服务器端开发**:例如,开发基于TCP的聊天服务器、文件传输服务器等。 - **客户端库**:用于与远程服务进行通信,如实现SSH客户端、FTP客户端等。 - **物联网(IoT)**:Mina的高效和轻量级特性使其适用于设备...
1. **配置ServerBootstrap**:这是MINA服务器端的基础配置对象,用于设置线程池、管道工厂等关键属性。在"mina2-http-demo"中,我们需要创建一个ServerBootstrap实例,然后配置NioSelectorProvider以支持非阻塞I/O。...
1. **初始化ServerBootstrap**:首先,我们需要创建一个`ServerBootstrap`对象,它是Mina服务器的核心配置类。 2. **设置通道处理链**:通过`pipeline()`方法设置`ChannelPipeline`,它定义了事件的处理流程。一般会...
2. **创建服务端和客户端**:通过MINA API设置服务器端监听端口,客户端连接服务器端。 3. **实现业务逻辑**:定义会话处理器,处理接收到的数据或发送数据。 4. **配置和启动**:使用Spring配置文件管理MINA组件...
Mina服务器端主要负责监听网络连接、接收客户端请求并发送响应。在这个Demo中,服务器端通常会包含以下组件: 1. **ServerBootstrap**: 这是服务器启动的核心类,用于配置服务器的参数,如绑定端口、选择NIO或BIO...
2. **服务端入口类**:启动Mina服务器的Java类,通常会包含Spring容器的初始化和网络监听端口的设置。 3. **业务处理器**:实现了Mina的IoHandler接口,处理来自客户端的事件和数据。 4. **协议编码解码器**:用于将...
1. 如何配置和启动Mina服务器,监听和处理客户端连接。 2. 如何在客户端创建连接,并发送和接收数据。 3. 理解Mina的过滤器机制,以及如何编写自定义过滤器。 4. 实践数据编码和解码的过程,理解ProtocolCodec的使用...
- **src/main/java**:存放服务器端的Java源代码,包括IoAcceptor的配置、过滤器链的定义和处理器的实现。 - **src/main/resources**:可能包含配置文件,如log4j配置,或者自定义的协议编码解码类的XML配置。 - **...
Acceptor线程在调用`Acceptor.bind()`方法后启动。每个Acceptor只有一个Acceptor线程,由Mina自动创建,无法进行配置。 2. **Connector Thread**:在客户端端,对应的线程模型称为Connector thread。它的功能与...
Mina服务器是一个基于Java开发...通过学习这个简单的代码示例,你可以掌握如何启动Mina服务器,以及如何处理客户端的连接和数据交换。这对于开发网络应用,特别是需要高效处理大量并发连接的场景,具有重要的实践价值。
Mina支持多种协议,如TCP/IP、UDP、SSL/TLS等,因此常用于构建服务器端应用,如HTTP服务器、FTP服务器、聊天服务器等。 标题“mina作为服务器的用法”表明我们将探讨如何使用Mina框架来搭建和操作服务器。这个主题...
标题中的"mina-master_mina_"可能指的是一个MINA项目或示例的主分支,可能包含了服务器端的核心代码和配置。描述中提到的"mina 服务端的简单应用,直接部署可以使用"表明这个压缩包包含了一个能够快速运行的MINA...
1. **创建服务器端**: - 初始化Acceptor,指定监听的端口号。 - 实现IoHandler接口,定义服务器接收到消息后的处理逻辑。 - 启动Acceptor,开始监听客户端连接。 2. **创建客户端**: - 初始化Connector,指定...
- **Server端**:在时间服务器中,Mina会创建一个Acceptor,监听特定的端口,等待客户端连接。当客户端连接建立后,Acceptor会创建一个Session对象,用于管理与该客户端的通信。然后,一个自定义的过滤器(例如,...
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_server`,这通常是通过运行包含服务器端逻辑的主类实现的,服务器端会监听指定的端口,等待客户端连接。服务器启动后,它会使用预定义的编解码器来处理接收到的数据。 接着,我们启动`mina...
这个文件名可能是项目的Git仓库名称,其中“cuihp”可能是开发者的用户名,“AndroidServer”表明这是一个关于Android服务器端的项目,而“4931b93”可能是某个版本或提交的哈希值。这个项目可能包含源代码、配置...