1、MINA:
一个简洁易用的基于TCP/IP通信的JAVA框架
2、下载地址:
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 NIO
SocketAcceptor 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 {
//一次会话被打开
@Override
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
System.out.println("welcome Client :" + session.getRemoteAddress()); //获取远程地址谁连接进来了
}
//回话关闭
@Override
public void sessionClosed(IoSession session) throws Exception {
super.sessionClosed(session);
System.out.println("Client closed");
}
//接受消息
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
super.messageReceived(session, message);
//前面是一行一行读 接受的是字符串String
String msg = (String)message; //接受到的消息对象
System.out.println("收到客户端发来的消息:" + msg);
session.write("echo:" + msg); //向给客户端发送消息对象
}
}
3、开启Windows下测试网络连接的工具:
先启动服务器,在打开cmd控制台输入:telnet localhost 9999
测试成功...