Java Socket框架Apache MINA:实现Socket服务器端
Java Socket框架Apache MINA:实现Socket服务器端
现在用Apache MINA实现一个简单的Socket服务器端Server,服务器端实现一个简单的功能,当有Socket客户端连接过来后,发送一个简单的字符串“zhangphil”给客户端。服务器端程序代码如下:
import java.net.InetSocketAddress;
import java.nio.charset.Charset;import org.apache.mina.core.service.IoAcceptor;
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.TextLineCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;public class MINATest {public static void main(String[] args) {try {MINATest test = new MINATest();} catch (Exception e) {e.printStackTrace();}}public MINATest() throws Exception {IoAcceptor acceptor = new NioSocketAcceptor();// 过滤链。acceptor.getFilterChain().addLast("logger", new LoggingFilter());acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));// 处理。acceptor.setHandler(new SocketServerHandler());// 服务器端绑定80端口,等待客户端连接请求。acceptor.bind(new InetSocketAddress(80));}// Apache MINA的Socket服务器端。private class SocketServerHandler extends IoHandlerAdapter {// 会话创建。@Overridepublic void sessionCreated(IoSession session) throws Exception {super.sessionCreated(session);System.out.println("#sessionCreated#");}// 会话打开时触发(第一次连接时先触发sessionCreated函数,后触发本函数)。@Overridepublic void sessionOpened(IoSession session) throws Exception {super.sessionOpened(session);System.out.println("#sessionOpened#");sendDataToClient(session);}@Overridepublic void messageSent(IoSession session, Object message) throws Exception {super.messageSent(session, message);System.out.println("#messageSent#");System.out.println("=============");System.out.println(message.toString());System.out.println("=============");}// 接收到消息时触发。@Overridepublic void messageReceived(IoSession session, Object message) throws Exception {super.messageReceived(session, message);// System.out.println("messageReceived");System.out.print(message.toString());}@Overridepublic void sessionClosed(IoSession session) throws Exception {super.sessionClosed(session);System.out.println("\n#sessionClosed#");}@Overridepublic void sessionIdle(IoSession session, IdleStatus status) throws Exception {super.sessionIdle(session, status);System.out.println("#sessionIdle#");}@Overridepublic void exceptionCaught(IoSession session, Throwable cause) throws Exception {super.exceptionCaught(session, cause);System.out.println("#exceptionCaught#");cause.printStackTrace();}}private void sendDataToClient(IoSession session) {String string = "zhangphil";session.write(string);}
}
服务器端程序运行后,当有客户端Socket连接过来,服务器端程序输出结果:
当远程连接过来的客户端突然断开连接,服务器端程序输出结果:
此时服务器端程序并未退出,当有新的客户端Socket连接过来后,服务端程序一如既往的发送数据“zhangphil”给客户端。输出如下:
Java Socket框架Apache MINA:实现Socket服务器端相关推荐
- 搭建Apache Mina框架并实现Server与Client端的简单消息传递
http://www.himigame.com/apache-mina/831.html :(作者新浪微博: @李华明Himi ) 转载自[黑米GameDev街区] 原文链接: http://www. ...
- Java NIO框架Mina
2019独角兽企业重金招聘Python工程师标准>>> 真羡慕java有系列的懒人框架,虽然c也有Netty, ACE等高速网络框架,但是语言的特性,决定了java框架之间更好集成, ...
- 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端消息传递
Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏 ...
- 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端的简单消息传递!
Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏 ...
- Java网络编程之MINA框架(1)
1.MINA: 一个简洁易用的基于TCP/IP通信的JAVA框架 2.下载地址: http://mina.apache.org/downloads-mina_2_0.html 3.至少需要: (在下载 ...
- 学习socket nio 之 mina实例
1:mina之浅谈 mina是apache基于socket nio的一套框架,可以从apache官网下载jar包和源码.试用起来非常方便,也非常强大.如果对socket nio还不是很了解的话:请看一 ...
- Apache MINA框架快速入门
一.为什么要用MINA框架 Apache Mina是一个网络通信应用框架,是基于TCP/IP.UDP/IP协议栈的通信框架,Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持,具有高性能 ...
- Apache Mina 介绍
为什么80%的码农都做不了架构师?>>> 1.MINA 框架简介 下图为本人根据对MINA的简要理解,所画出来的框架简图: Apache MINA 是一个网络应用框架,有助于用 ...
- Apache Mina开发手册
作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.介绍 Apache Mina是一个网络应用框架,简化用户开发高性能.高可扩展性的网络应用程序的难度.M ...
- 使用 Apache MINA 开发高性能网络应用程序
http://www.ibm.com/developerworks/cn/opensource/os-cn-apmina/ Apache MINA(Multipurpose Infrastructur ...
最新文章
- 除了芯片 我们还应关注哪些核心技术
- TiDB 数据库的 4 大应用场景分析
- redis的安装和测试
- 访问 IIS 元数据库失败 的解决方法
- [AlwaysOn Availability Groups] 健康模型 Part 2 ——扩展
- 单精度浮点数与十六进制转换
- matlab 计算汉明距_matlab实现滑动平均滤波
- 为什么HashMap会产生死循环?
- java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \ \' \\ )...
- include 与 Widget
- php 缩略图不失真,c#生成缩略图不失真的方法实例分享
- sql存储过程编写_您可以针对任何存储过程编写三个标准SQL单元测试
- CCF-CSP真题《202206-2—寻宝大冒险》思路+python满分题解
- 小程序分享至群群消息小结(包括分享到App)
- 【【运维】9个网络故障排除经典案例,你都得会吗?】
- 不改一行代码,快速迁移 Laravel 应用上云
- 华为p40还用麒麟990鸿蒙,华为P40渲染图曝光,2K挖孔屏+麒麟990+鸿蒙OS
- MFC 利用小型数据库Access 少步惆 教你用VC开发
- I Need Some Sleep / Eels
- Vue开发环境搭建和vue-cli脚手架