1、MINA:
一个简洁易用的基于TCP/IP通信的JAVA框架
2、下载地址:
http://mina.apache.org/downloads-mina_2_0.html
3、至少需要:
(在下载的文件中找以下两个jar包导入工程中)
mina-core-2.0.21.jar、slf4j-api-1.7.26.jar
4、开发一个Mina应用:
- 创建连接(TCP/IP)
- 设定过滤规则(字符串、对象等形式)
- 编写自己的消息处理器
5、代码示例:
(1)服务器:
package com.lemon.MINA;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;import java.io.IOException;
import java.net.InetSocketAddress;/*** MINA服务器:** @author lemonsun*/
public class Server {public static void main(String[] args) {//1、创建一个非阻塞的Server端Socket NIOSocketAcceptor acceptor = new NioSocketAcceptor();DefaultIoFilterChainBuilder chain = acceptor.getFilterChain(); //获取过滤链//2、设定一个过滤器,一行一行读取数据(/r/n)chain.addLast("Mychain",new ProtocolCodecFilter(new TextLineCodecFactory()));/*3、创建一个消息处理器类*///4、设置服务器端的消息处理器acceptor.setHandler(new MinaServerHandler());//MinaServerHandler自定义的消息处理器int port = 9999; //服务器端口号try {//绑定端口,启动服务器 ( 不会阻塞,立即返回)acceptor.bind(new InetSocketAddress(9999));} catch (IOException e) {e.printStackTrace();}System.out.println("MINA服务器已启动,正在监听"+ port +"等待连接...");}
}
(2)服务器端的消息处理器:
package com.lemon.MINA;import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;/*** 服务器端的消息处理器:* * @author lemonsun*/
public class MinaServerHandler extends IoHandlerAdapter {//一次会话被打开@Overridepublic void sessionOpened(IoSession session) throws Exception {super.sessionOpened(session);System.out.println("welcome Client :" + session.getRemoteAddress()); //获取远程地址谁连接进来了}//回话关闭@Overridepublic void sessionClosed(IoSession session) throws Exception {super.sessionClosed(session);System.out.println("Client closed");}//接受消息@Overridepublic void messageReceived(IoSession session, Object message) throws Exception {super.messageReceived(session, message);//前面是一行一行读 接受的是字符串StringString msg = (String)message; //接受到的消息对象System.out.println("收到客户端发来的消息:" + msg);session.write("echo:" + msg); //向给客户端发送消息对象}
}
3、开启Windows下测试网络连接的工具:
先启动服务器,在打开cmd控制台输入:telnet localhost 9999
测试成功...