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服务器端相关推荐

  1. 搭建Apache Mina框架并实现Server与Client端的简单消息传递

    http://www.himigame.com/apache-mina/831.html :(作者新浪微博: @李华明Himi ) 转载自[黑米GameDev街区] 原文链接: http://www. ...

  2. Java NIO框架Mina

    2019独角兽企业重金招聘Python工程师标准>>> 真羡慕java有系列的懒人框架,虽然c也有Netty, ACE等高速网络框架,但是语言的特性,决定了java框架之间更好集成, ...

  3. 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端消息传递

    Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏 ...

  4. 【Apache Mina2.0开发之一】搭建Apache Mina框架并实现Server与Client端的简单消息传递!

    Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏 ...

  5. Java网络编程之MINA框架(1)

    1.MINA: 一个简洁易用的基于TCP/IP通信的JAVA框架 2.下载地址: http://mina.apache.org/downloads-mina_2_0.html 3.至少需要: (在下载 ...

  6. 学习socket nio 之 mina实例

    1:mina之浅谈 mina是apache基于socket nio的一套框架,可以从apache官网下载jar包和源码.试用起来非常方便,也非常强大.如果对socket nio还不是很了解的话:请看一 ...

  7. Apache MINA框架快速入门

    一.为什么要用MINA框架 Apache Mina是一个网络通信应用框架,是基于TCP/IP.UDP/IP协议栈的通信框架,Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持,具有高性能 ...

  8. Apache Mina 介绍

    为什么80%的码农都做不了架构师?>>>    1.MINA 框架简介 下图为本人根据对MINA的简要理解,所画出来的框架简图: Apache MINA 是一个网络应用框架,有助于用 ...

  9. Apache Mina开发手册

    作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.介绍 Apache Mina是一个网络应用框架,简化用户开发高性能.高可扩展性的网络应用程序的难度.M ...

  10. 使用 Apache MINA 开发高性能网络应用程序

    http://www.ibm.com/developerworks/cn/opensource/os-cn-apmina/ Apache MINA(Multipurpose Infrastructur ...

最新文章

  1. 除了芯片 我们还应关注哪些核心技术
  2. TiDB 数据库的 4 大应用场景分析
  3. redis的安装和测试
  4. 访问 IIS 元数据库失败 的解决方法
  5. [AlwaysOn Availability Groups] 健康模型 Part 2 ——扩展
  6. 单精度浮点数与十六进制转换
  7. matlab 计算汉明距_matlab实现滑动平均滤波
  8. 为什么HashMap会产生死循环?
  9. java中正则表达式,编译报错:Invalid escape sequence (valid ones are \b \t \n \f \r \ \' \\ )...
  10. include 与 Widget
  11. php 缩略图不失真,c#生成缩略图不失真的方法实例分享
  12. sql存储过程编写_您可以针对任何存储过程编写三个标准SQL单元测试
  13. CCF-CSP真题《202206-2—寻宝大冒险》思路+python满分题解
  14. 小程序分享至群群消息小结(包括分享到App)
  15. 【【运维】9个网络故障排除经典案例,你都得会吗?】
  16. 不改一行代码,快速迁移 Laravel 应用上云
  17. 华为p40还用麒麟990鸿蒙,华为P40渲染图曝光,2K挖孔屏+麒麟990+鸿蒙OS
  18. MFC 利用小型数据库Access 少步惆 教你用VC开发
  19. I Need Some Sleep / Eels
  20. Vue开发环境搭建和vue-cli脚手架

热门文章

  1. 关于网页视频下载方法及工具
  2. php全量导出,项目中生成器应用,解决量级数据导出excel内存溢出
  3. 摆球控制程序PID算法
  4. 深度学习之卷积自编码器
  5. 如何免费批量将caj转换成PDF
  6. 计算机文化基础练习题及答案
  7. 信号与系统速成和课后作业
  8. 关于计算机的英语介绍,计算机专业的英语自我介绍
  9. 华为手机序列号前三位_华为所有型号交换机查看序列号方法
  10. 考研复试对计算机专业了解,装备学院计算机专业综合(905)2017年考研复试大纲...