上篇文章中是用telnet来访问服务端的,这篇文章会通过Mina来写一个客户端的程序。
闲话少说,先附上代码:
public class MinaClient {
private static IoSession session = null;
private static String host = "127.0.0.1";//ip地址
private static int port = 7080;//端口号
public static void main(String[] args) {
IoConnector connector = new NioSocketConnector();
//设置超时时间
connector.setConnectTimeout(3000);
//设置过滤器
connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(
new TextLineCodecFactory(
Charset.forName("UTF-8"),
LineDelimiter.WINDOWS.getValue(), //编码器
LineDelimiter.WINDOWS.getValue())));//解码器
//设置处理类
connector.setHandler(new MyClientHandler());
//绑定地址
ConnectFuture future = connector.connect(new InetSocketAddress(host, port));
future.awaitUninterruptibly();//等待我们的连接
session = future.getSession();
session.write("你好,服务端");
session.getCloseFuture().awaitUninterruptibly();//等待关闭连接
connector.dispose();
}
}
自定义的处理类:
由于之前其他的方法已经在服务端的处理类中看到效果了,这里就不重写了
public class MyClientHandler extends IoHandlerAdapter{
@Override
/**
* 连接发生异常
*/
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
System.out.println("exceptionCaught");
}
@Override
/**
* 客户端接收数据
*/
public void messageReceived(IoSession session, Object message) throws Exception {
String msg = (String) message;
System.out.println("客户端接收数据:"+msg);
}
}
运行:
启动服务端,启动客户端
服务端:
客户端:
愿你走出半生,归来仍是少年。