一、服务器端:
package com.ppt.mina;
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 MinaServer {
private static int PORT = 9999;
public static void main(String...aa) throws Exception {
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 ServerHandle());
acceptor.bind(new InetSocketAddress(PORT));
}
}
二、服务器端处理类:
package com.ppt.mina;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class ServerHandle extends IoHandlerAdapter {
@Override
public void sessionOpened(IoSession session) throws Exception {
System.out.println("server session open");
}
@Override
public void sessionClosed(IoSession session) throws Exception {
System.out.println("server session closed");
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
String str = message.toString();
System.out.println(str);
session.write("hello client");
}
}
三、客户端:
package com.ppt.mina;
import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.core.future.ConnectFuture;
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.filter.logging.LoggingFilter;
import org.apache.mina.transport.socket.nio.NioSocketConnector;
public class MinaClient {
private static String ip = "127.0.0.1";
private static int port = 9999;
public static void main(String[] args) {
NioSocketConnector connector = new NioSocketConnector();
connector.setConnectTimeoutMillis(10000);
connector.getFilterChain().addLast("logger", new LoggingFilter());
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(Charset.forName("UTF-8"))));
connector.setHandler(new ClientHandle());
IoSession session = null;
while(true) {
ConnectFuture future = connector.connect(new InetSocketAddress(ip, port));
future.awaitUninterruptibly();
session = future.getSession();
break;
}
session.getCloseFuture().awaitUninterruptibly();
connector.dispose();
}
}
四、客户端处理类:
package com.ppt.mina;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
public class ClientHandle extends IoHandlerAdapter {
@Override
public void sessionOpened(IoSession session) throws Exception {
System.out.println("client session open");
session.write("hello server");
}
@Override
public void sessionClosed(IoSession session) throws Exception {
System.out.println("client session closed");
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
String str = message.toString();
System.out.println(str);
}
}
mina给服务器段发信息,服务器返回一个信息,over。