上一篇博客写的是怎样运用Mina的一些Java包来写通信的优化应用。下面是写的是客服端和服务端的代码:
/**
* 创建客户端处理器
*
* @author luozhong
*
*/
import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
public class Client_MinaTest {
public static void main(String args[]) {
// Create TCP/IP connector.
NioSocketConnector connector = new NioSocketConnector();
// 创建接收数据的过滤器
DefaultIoFilterChainBuilder chain = connector.getFilterChain();
// 设定这个过滤器将一行一行(/r/n)的读取数据
chain.addLast("myChin", new ProtocolCodecFilter(
new TextLineCodecFactory()));
// 设定服务器端的消息处理器:一个SamplMinaServerHandler对象,
connector.setHandler(new ExceptionClient_mina());
// Set connect timeout.
connector.setConnectTimeout(30);
// 连结到服务器:
ConnectFuture cf = connector.connect(new InetSocketAddress("localhost",
8888));
// Wait for the connection attempt to be finished.
cf.awaitUninterruptibly();
cf.getSession().getCloseFuture().awaitUninterruptibly();
connector.dispose();
}
}
/**
* 创建客户端处理器
*
* @author luozhong
*
*/
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class ExceptionClient_mina extends IoHandlerAdapter {
// 客服端连接
public void sessionOpened(IoSession session) throws Exception {
System.out.println("进入链接:" + session.getRemoteAddress());
session.write("I am coming!");
}
// 当一个客户端关闭时
@Override
public void sessionClosed(IoSession session) {
System.out.println("one Clinet Disconnect !");
}
// 当客户端发送的消息到达时:
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
// 我们己设定了服务器解析消息的规则是一行一行读取,这里就可转为String:
String s = (String) message;
// Write the received data back to remote peer
System.out.println("服务器发来的收到消息: " + s);
// 测试将消息回送给客户端
session.write(s);
}
}
/**
* Mina服务端测试
* @author luozhong
*
*/
import java.net.InetSocketAddress;
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
public class MinaServerTest {
public static void main(String[] args) throws IOException {
//创建一个非阻塞的Server和Socket,用NIO
SocketAcceptor acceptor=new NioSocketAcceptor();
//创建接收数据的过滤器
DefaultIoFilterChainBuilder filter=acceptor.getFilterChain();
//设定过滤器一行一行的读取数据
filter.addLast("myMina", new ProtocolCodecFilter(new TextLineCodecFactory()));
//设定服务器端的消息处理器:SamplMinaServerHandler对象
acceptor.setHandler(new ExceptionMiNa());
//服务器绑定的端口
int port=8888;
//绑定端口,启动服务器
acceptor.bind(new InetSocketAddress(port));
System.out.println("Mina Server is Listing on:= " + port);
}
}
/**
* 自定义消息处理器
*
* @author luozhong
*
*/
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class ExceptionMiNa extends IoHandlerAdapter {
private int count;
// 客服端进入连接时
public void sessionOpend(IoSession session) {
System.out.println("进入连接:" + session.getRemoteAddress());
}
//当一个客服端关闭时
public void sessionClosed(IoSession session){
System.out.println("关闭连接");
}
//当客服端发送的消息到达时
public void ReceivedMsg(IoSession session,Object msg){
//定规则一行一行读取,转为字符串
String str=(String)msg;
System.out.println("受到客户发来的信息:"+str);
//测试将信息回送给客户机
session.write(str+count);
count++;
}
}
分享到:
相关推荐
《Mina 框架源码解析 - 构建简单通信程序》 Mina(Minimal Asynchronous Network)是一个用于构建高性能、高可扩展性的网络应用程序的框架,它为开发者提供了低级的网络通信抽象,使其能够专注于业务逻辑,而不是...
通过阅读MINA 2.0.9的源码,你可以了解如何实现高效的网络通信,包括事件驱动的设计模式、多线程处理、数据包的拆分和组合,以及如何利用过滤器链实现复杂的功能。此外,源码分析还能帮助你掌握如何自定义Filter和...
### Mina2源码分析——核心模块解析 #### 概述 Mina2是一个高性能、可扩展的网络应用框架,支持多种传输协议如TCP、UDP等,并提供了丰富的API供开发者使用。本文旨在深入剖析Mina2的核心部分,帮助读者更好地理解和...
此外,对于Java开发者来说,熟悉Mina2源码有助于理解其他类似的网络通信框架,比如Netty,因为它们都基于相似的设计理念和架构。学习Mina2不仅可以提升专业技能,还能为将来的工作和项目带来更大的灵活性和效率。
2. **Filter Chain**:MINA采用过滤器链模式来处理网络通信。每个过滤器都可以执行特定的处理任务,如数据编码解码、安全性检查等。过滤器之间通过IoHandler接口交互,形成一个可扩展的处理流程。 3. **Transport ...
总之,Apache Mina是一个强大的网络通信框架,通过理解和利用其源码及提供的jar包,开发者可以构建出高效、可扩展的网络应用。在实际项目中,结合Mina的特性,我们可以解决许多网络编程的挑战,提升系统的性能和稳定...
通过对Mina源码的学习,开发者不仅能理解其设计理念,还能掌握如何优化网络通信应用,提高系统的稳定性和性能。此外,学习Mina也能帮助开发者更好地理解Java NIO和网络编程的底层原理,对于提升专业技能非常有帮助。
MINA的目标是让开发者能够专注于应用层的逻辑,而无需关心网络通信的底层细节。在这个“MINA源码分析,内涵类的讲解”中,我们将深入探讨MINA的核心组件和设计模式,以便更好地理解和利用这个强大的框架。 首先,...
这个示例集合是为了学习和交流而准备的,开发者可以通过分析源码了解Mina如何处理网络通信,如何构建过滤器链,以及如何实现自定义的协议编码解码器。同时,这些示例也提供了实际操作的机会,便于开发者在遇到问题...
Apache MINA(Multipurpose Infrastructure for Network Applications)是一个开源框架,主要设计用于简化网络应用程序的开发,特别是对于基于TCP和UDP的通信。MINA提供了一种高级的、高性能的、异步事件驱动的网络...
通过深入分析Mina2.0的源码,我们可以了解到其内部的事件驱动模型、网络通信机制以及如何通过过滤器和处理器来处理网络请求。这有助于我们更好地理解和利用Mina框架来开发高并发、高性能的网络应用。
代码利用mina框架实现了服务器端和客户端,客户端的登录请求、客户端向服务器端请求图片文件的功能。代码分为服务端和客户端,开发环境eclipse。服务器代码可在web项目中使用,客户端代码可以在Android开发时使用,...
本源码是《NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战》一文的服务端实现(MINA2版),详见:http://www.52im.net/thread-378-1-1.html
通过对Mina源码的深入解析,开发者不仅可以理解其设计理念,还能学习到如何高效地处理网络通信问题,提升自己的网络编程技能。同时,Mina的模块化设计和丰富的功能,使其成为开发复杂网络服务的有力工具。
《mina mmorpg服务端源码...通过对"mina mmorpg服务端源码"的深入学习和研究,开发者不仅可以掌握网络通信和游戏服务器开发的关键技术,还能提升对大规模分布式系统设计的理解,为构建自己的游戏服务端打下坚实基础。
从github上下载的mina框架源码 Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便 apache mina apache mina...
Mina 2.0 是一个基于Java NIO技术的高效、可伸缩的网络通信框架,广泛应用于服务器端开发。Mina 2.0 的设计目标是为开发者提供一个易于使用的API,使得开发者能够快速构建高性能的网络应用。 **1.1 Mina 2.0快速...
MINA的设计目标是为开发者提供一个通用的基础设施,使得他们能够专注于业务逻辑,而无需关心底层网络通信的复杂性。 在深入分析MINA框架源码之前,我们需要理解几个核心概念: 1. **过滤器(Filter)**:MINA采用...
Mina2.0框架源码剖析 Mina2.0是一个基于Java的网络应用框架,提供了一个简洁、灵活的API,帮助开发者快速构建高性能的网络应用程序。下面是Mina2.0框架源码剖析的相关知识点: 一、Mina2.0框架概述 Mina2.0是一个...
3. **编写简单的应用**:从例子入手,创建一个简单的MINA服务器和客户端,理解它们之间的通信机制。 4. **实现自定义过滤器**:根据需求,编写自定义的过滤器,以实现特定的数据处理功能。 5. **性能调优**:了解...