java web----MINA框架使用
前期准备
1、下载
http://mina.apache.org/
2、将依赖包添加到工程目录下(在工程目录下创建libs(directory目录))
3、将 slf4j-api-1.7.26.jar 和 mina-core-2.0.21.jar 依赖包添加到libs目录下
4、给这两个文件和工程绑定关系,方法:选中两个文件,右击,选择 Add as Library
代码实现
服务端
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.service.IoHandlerAdapter;
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.transport.socket.SocketAcceptor;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor; import java.io.*;
import java.net.InetSocketAddress; public class Server{
public static void main(String[] args) {
//创建一个非堵塞的Server(Socker),[NIO模式]
SocketAcceptor acceptor = new NioSocketAcceptor();
//创建一个过滤器对象
DefaultIoFilterChainBuilder chain = acceptor.getFilterChain(); //设定一个过滤器,一行一行的读取数据(/r/n)
//chain.addLast("myChain",new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));//表示传数据的数据是一个对象;
chain.addLast("myChain",new ProtocolCodecFilter(new TextLineCodecFactory()));
//设置服务器的消息处理器
acceptor.setHandler(new MinaServerHandle());
int port = 8080; //服务器的端口号
try {
//绑定端口,并且启动服务器,立刻返回,不会堵塞
acceptor.bind(new InetSocketAddress(port)); } catch (IOException e) {
e.printStackTrace();
}
System.out.println("MINA服务器已经开启,端口号:"+port);
}
} //服务器端的消息处理器
class MinaServerHandle extends IoHandlerAdapter {
//会话开始
@Override
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
System.out.println(session.getRemoteAddress()+"已连接");//获取客户端连接的ip地址
}
//会话结束
@Override
public void sessionClosed(IoSession session) throws Exception {
System.out.println("会话结束");
} //接受消息
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
super.messageReceived(session, message);
System.out.println(message); //接受消息
session.write("hellow");
}
}
客户端1
1.可以使用window自带的telnet工具和服务器连接,并进行通信
首先打开Telnet,在控制面板中,打开程序和功能,在打开 (打开或关闭windows 功能),选中Telnet 客户端 ,确定
测试:控制台上输入 telnet localhost(服务器的ip地址) 8080(服务器的端口) ,即可
客户端2
2.自己写客户端程序
import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoHandlerAdapter;
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.transport.socket.nio.NioSocketConnector; import java.net.InetSocketAddress;
import java.util.Scanner; public class client {
public static void main(String[] args) {
NioSocketConnector conn = new NioSocketConnector();
DefaultIoFilterChainBuilder chain = conn.getFilterChain();
chain.addLast("myChain",new ProtocolCodecFilter(new TextLineCodecFactory()));
conn.setHandler(new MinaClientHandle());
conn.setConnectTimeoutCheckInterval(3000); //连接服务器
ConnectFuture cf = conn.connect(new InetSocketAddress("localhost", 8080));
cf.awaitUninterruptibly(); //等待连接成功;
Scanner input = new Scanner(System.in);
while (true){
System.out.println("输入消息");
String msg = input.nextLine();
cf.getSession().write(msg);
}
//等待服务器关闭连接
//cf.getSession().getCloseFuture().awaitUninterruptibly();
//conn.dispose();
}
}
class MinaClientHandle extends IoHandlerAdapter {
@Override
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
System.out.println("已连接");
}
@Override
public void sessionClosed(IoSession session) throws Exception {
super.sessionClosed(session);
System.out.println("已关闭");
}
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
super.messageReceived(session, message);
System.out.println("服务器返回消息:"+message);
}
}
java web----MINA框架使用的更多相关文章
- "轻"量级 Java Web 服务框架漫谈
博文太长了, 还是先说下概要: 框架"轻量"与否可以从两方面来看待: 1) 框架本身的体量 - 例如小 jar 无依赖的苗条框架; 2) 用户使用框架是否获得各种便利而无阻隔(&q ...
- 开发大型项目必备 98%公司都在用的十佳 Java Web 应用框架
众所周知,工欲善其事,必先利其器.选择一个好的 Web 应用框架就像一把称手的兵器,可以助大家披荆斩棘. 今天就为大家整理了十佳 Java Web 应用框架,并简单讨论一下它们的优缺点. 第一,大名鼎 ...
- fast-framework – 基于 JDK 8 实现的 Java Web MVC 框架
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! fast-framework 轻量级 Java Web 框架 – https://github. ...
- 很反感Java Web 三层框架
为什么反感,大家 看图就知道了.一层一层的框架叠加,要达到精通就要一个一个框架的去深入了解,谁有这个精力?PHP没有这么多框架,为何依然能开发大型网站呢? 不过此图的原文却在推销使用Java,原文点此 ...
- Java Web UI框架
1.Aliceui Aliceui是支付宝的样式解决方案,是一套精选的基于 spm 生态圈的样式模块集合,是 Arale 的子集,也是一套模块化的样式命名和组织规范,是写 CSS 的更好方式. git ...
- Java Web SSH框架总是无法写入无法读取Cookie
不关乎技术,关乎一个小Tips: 默认情况下,IE和Chrome内核的浏览器会认为http://localhost为无效的域名,所以不会保存它的cookie,使用http://127.0.0.1访问程 ...
- 大型Java Web项目的架构和部署问题
一位ID是jackson1225的网友在javaeye询问了一个大型Web系统的架构和部署选型问题,希望能提高现有的基于Java的Web应用的服务能力.由于架构模式和部署调优一直是Java社区的热门话 ...
- java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化
一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...
- 基于Java Mina框架的部标808服务器设计和开发
在开发部标GPS平台中,部标808GPS服务器是系统的核心关键,决定了部标平台的稳定性和行那个.Linux服务器是首选,为了跨平台,开发语言选择Java自不待言. 我们为客户开发的部标服务器基于Min ...
- 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处 理有关,形成一个基础,在开发别的应用项目的时候则可以从 ...
随机推荐
- Python 9 进程,线程
本节内容 python GIL全局解释器锁 线程 进程 Python GIL(Global Interpreter Lock) In CPython, the global interpreter l ...
- 【mmall】Jackson序列化时isSuccess()方法的注意点
参考链接:遭遇fastjson的一个坑
- Centos7配置静态IP后无法ping通外部网络的问题(无法上网)
打开ifcfg-ens33配置文件,注意下面标记部分 建议: (1)ifcfg-ens33 DNS 配置 DNS1=8.8.8.8 DNS2=8.8.4.4 (2)配置DNS解析才能够识别外部的IP域 ...
- 20165237 2017-2018-2 《Java程序设计》第4周学习总结
20165237 2017-2018-2 <Java程序设计>第4周学习总结 教材学习内容总结 1.子类只能有一个父类,父类可以有多个子类. 2.子类继承父类的成员变量和方法. 3.开闭原 ...
- 加扰与加密&解扰与解密
原文:https://blog.csdn.net/yuan892173701/article/details/8743543 加扰就是改变标准电视信号的特性,在发送端按规定处理,而加密就是在加解扰系统 ...
- java知识点2
进阶篇 Java底层知识 字节码.class文件格式 CPU缓存,L1,L2,L3和伪共享 尾递归 位运算 用位运算实现加.减.乘.除.取余 设计模式 了解23种设计模式 会使用常用设计模式 单例.策 ...
- linux服务器ntp客户端配置【转】
转自:https://www.cnblogs.com/kerrycode/archive/2015/08/20/4744804.html 在Linux系统中,为了避免主机时间因为在长时间运行下所导致的 ...
- go学习笔记
安装 brew install go 国际惯例hello,world. 创建文件hello.go go文件的main方法为函数的主入口,必须有这个方法. hello.go package main i ...
- 关于CaciiEZ端口流量阀值报警的设置
作者:邓聪聪 环境:CactiEZ v10.1 为了更高效的发现问题,在非工作期间,公司的网络可能会出现一些故障,为了及时解决问题,所以做了一个流量监控,并以邮件的方式发送流量异常的端口,以便及时了解 ...
- 微信小程序-输入框输入文字后,将光标移到文字中间,接着输入文字后光标又自动跳到最后
问题描述: input输入框输入一段文字后,将光标移到文字中间,接着输入文字后光标又自动跳到最后去了. 原因: input事件中,给input框绑定任何事件后,在处理事件时 setData之后就会让光 ...