服务端代码:
package com.jidongcloud.server;
import java.util.Date;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class TimeServerHandler extends IoHandlerAdapter{
//设置一个变量
public static int count=0;
//当捕获到异常时会触发(这里不做任何处理,仅仅打印一下)
public void execptionCaught(IoSession session,Throwable cause) throws Exception {
cause.printStackTrace();
}
//当接收到数据时触发
public void messageReceived(IoSession session, Object message) {
String mes=message.toString();
//当接受到的数据是quit时或者用户请求大于2次关闭连接
if(mes.trim().equalsIgnoreCase("quit")||count>2) {
System.out.println("正在退出时间服务器");
session.write("正在退出时间服务器。。。。");
session.close();
return;
}
//向客户端回复一个当前时间
Date date = new Date();
session.write(date.toString());
System.out.println("message writen:"+mes);
count++;
}
}
package com.jidongcloud.server;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.service.IoAcceptor;
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 MinaTimeServer {
public static void main(String[] args) throws IOException {
//创建IoService的实例
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 TimeServerHandler());
//让其监听某个端口
acceptor.bind(new InetSocketAddress(9123));
}
}
客户端代码:
package com.jidongcloud.client;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.future.ConnectFuture;
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.NioSocketConnector;
public class TcpClient {
public static void main(String[] args) {
//创建IoService实例
NioSocketConnector connector = new NioSocketConnector();
//设置过滤链
connector.getFilterChain().addLast("logger", new LoggingFilter());
connector.getFilterChain().addLast("codec",
new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"))));
//设置处理器
connector.setHandler(new TcpClientHandler());
//连接地址
ConnectFuture connect = connector.connect(new InetSocketAddress("localhost",9123));
}
}
package com.jidongcloud.client;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class TcpClientHandler extends IoHandlerAdapter{
//会话创建时触发
public void sessionCreated(IoSession session) throws Exception {
System.out.println("session Created");
}
//会话打开时触发(第一次连接时先触发sessionCreated函数,后触发本函数)
public void sessionOpened(IoSession session) throws Exception {
session.write("Hello....");
}
//当接收到消息时触发
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println("收到:"+message.toString());
session.write("Received :"+message.toString());
}
}
package com.jidongcloud.client;
public class TestMain {
public static void main(String[] args) {
byte[] bytes = "0".getBytes();
//字符数组
System.out.println(bytes[0] );
}
}