Commit 2e6f208cc63d2f9fefd4907313c8b7f1f86e1f74

Authored by 林本磊
1 parent 5aac4950
Exists in develop

fix: 创建客户端

src/main/java/com/example/mina/client/base/A.java
... ... @@ -1,4 +0,0 @@
1   -package com.example.mina.client.base;
2   -
3   -public class A {
4   -}
src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java 0 → 100644
... ... @@ -0,0 +1,14 @@
  1 +package com.example.mina.client.base;
  2 +
  3 +
  4 +import org.apache.mina.core.service.IoHandlerAdapter;
  5 +import org.apache.mina.core.session.IoSession;
  6 +
  7 +public abstract class AbstractVirtualBoxClientHandler extends IoHandlerAdapter {
  8 +
  9 + @Override
  10 + public void sessionCreated(IoSession session) throws Exception {
  11 + System.out.println("客户端创建成功");
  12 + }
  13 +
  14 +}
... ...
src/main/java/com/example/mina/client/test/ClientHandler.java 0 → 100644
... ... @@ -0,0 +1,44 @@
  1 +package com.example.mina.client.test;
  2 +
  3 +import org.apache.mina.core.service.IoHandler;
  4 +import org.apache.mina.core.service.IoHandlerAdapter;
  5 +import org.apache.mina.core.session.IdleStatus;
  6 +import org.apache.mina.core.session.IoSession;
  7 +import org.apache.mina.filter.FilterEvent;
  8 +
  9 +public class ClientHandler extends IoHandlerAdapter {
  10 +
  11 + @Override
  12 + public void sessionOpened(IoSession session) throws Exception {
  13 + System.out.println("incomming 客户端: " + session.getRemoteAddress());
  14 + //session.write("i am coming");
  15 + }
  16 +
  17 + @Override
  18 + public void exceptionCaught(IoSession session, Throwable cause)
  19 + throws Exception {
  20 + System.out.println("客户端发送信息异常....");
  21 + }
  22 +
  23 + // 当客户端发送消息到达时
  24 + @Override
  25 + public void messageReceived(IoSession session, Object message)
  26 + throws Exception {
  27 +
  28 + System.out.println("服务器返回的数据:" + message.toString());
  29 + }
  30 +
  31 + @Override
  32 + public void sessionClosed(IoSession session) throws Exception {
  33 + System.out.println("客户端与服务端断开连接.....");
  34 + }
  35 +
  36 + @Override
  37 + public void sessionCreated(IoSession session) throws Exception {
  38 + // TODO Auto-generated method stub
  39 + System.out
  40 + .println("one Client Connection" + session.getRemoteAddress());
  41 + session.write("RA 121 456");
  42 + }
  43 +
  44 +}
... ...
src/main/java/com/example/mina/client/test/MinaClient.java 0 → 100644
... ... @@ -0,0 +1,50 @@
  1 +package com.example.mina.client.test;
  2 +
  3 +import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
  4 +import org.apache.mina.core.future.ConnectFuture;
  5 +import org.apache.mina.core.service.IoConnector;
  6 +import org.apache.mina.core.session.IoSession;
  7 +import org.apache.mina.filter.codec.ProtocolCodecFilter;
  8 +import org.apache.mina.filter.codec.prefixedstring.PrefixedStringCodecFactory;
  9 +import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
  10 +import org.apache.mina.filter.logging.LoggingFilter;
  11 +import org.apache.mina.transport.socket.nio.NioSocketConnector;
  12 +
  13 +import java.net.InetSocketAddress;
  14 +import java.nio.charset.Charset;
  15 +import java.util.Scanner;
  16 +
  17 +public class MinaClient {
  18 +
  19 +
  20 +
  21 + public static void main(String[] args)
  22 + {
  23 + //Create TCP/IP connection
  24 + NioSocketConnector connector = new NioSocketConnector();
  25 +
  26 + //创建接受数据的过滤器
  27 + DefaultIoFilterChainBuilder chain = connector.getFilterChain();
  28 +
  29 + //设定这个过滤器将一行一行(/r/n)的读取数据
  30 + chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));
  31 +
  32 + //客户端的消息处理器:一个SamplMinaServerHander对象
  33 + connector.setHandler(new ClientHandler());
  34 +
  35 + //set connect timeout
  36 + connector.setConnectTimeout(30);
  37 +
  38 + //连接到服务器:
  39 + ConnectFuture cf = connector.connect(new InetSocketAddress("localhost",9104));
  40 +
  41 + //Wait for the connection attempt to be finished.
  42 + cf.awaitUninterruptibly();
  43 +
  44 + cf.getSession().getCloseFuture().awaitUninterruptibly();
  45 +
  46 + connector.dispose();
  47 +
  48 +
  49 + }
  50 +}
... ...
src/main/java/com/example/mina/server/box/rmasm/RmasmMessageEncoder.java
... ... @@ -13,7 +13,9 @@ public class RmasmMessageEncoder implements ProtocolEncoder {
13 13 if (message instanceof RmasmResponseMessage) {
14 14  
15 15 byte[] result = ((RmasmResponseMessage) message).getResult();
16   - session.write(IoBuffer.wrap(result));
  16 + //session.write(IoBuffer.wrap(result));
  17 + IoBuffer w = IoBuffer.wrap(result);
  18 + session.write(w);
17 19 }
18 20 }
19 21  
... ...