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的请求和响应处 理有关,形成一个基础,在开发别的应用项目的时候则可以从 ...
随机推荐
- LOJ #6261 一个人的高三楼
生成函数和组合数学的灵活应用 LOJ #6261 题意:求一个数列的$ k$次前缀和 $ Solution:$ 我们对原数列$ a$建生成函数$ A=\sum\limits_{i=0}^{n-1} a ...
- NPOI 列宽自适应 代码示例
//列宽自适应,只对英文和数字有效 for (int i = 0; i <= maxColumn; i++) { sheet.AutoSizeColumn(i); } //获取当前列的宽度,然后 ...
- linux 如何保持兼容性
参考链接: https://www.cnblogs.com/MYSQLZOUQI/p/5383594.html
- jQuery(二)button事件改变标签值
button事件改变标签值 例子一: <html> <head> <script type="text/javascript" src="/ ...
- shell编程 之 ssh远程连接
1,ssh理解 有两个服务器,一个是本地,一个是云端的,都是linux系统的,如果我们想要通过本地访问云端的系统,那我们可以用ssh命令,可以实现本地登入远程连接,上传或者下载文件到远程服务器. ss ...
- Python3-lamba表达式、zip函数
lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 == : name = 'wupeiqi' else: name = 'alex' ...
- Pthread:POSIX 多线程程序设计【转】
转自:http://www.cnblogs.com/mywolrd/archive/2009/02/05/1930707.html#phtread_ref POSIX 多线程程序设计 Blaise ...
- asyncio Queue的使用例子
import aiohttp import asyncio import async_timeout from urllib.parse import urljoin, urldefrag root_ ...
- C++ URLencode library
I need a library that can URLencode a string/char array. Now, I can hex encode an ASCII array like h ...
- Tour HDU - 3488 有向环最小权值覆盖 费用流
http://acm.hdu.edu.cn/showproblem.php?pid=3488 给一个无源汇的,带有边权的有向图 让你找出一个最小的哈密顿回路 可以用KM算法写,但是费用流也行 思路 1 ...