From 2e6f208cc63d2f9fefd4907313c8b7f1f86e1f74 Mon Sep 17 00:00:00 2001 From: linbenlei <572833793@qq.com> Date: Wed, 10 Mar 2021 13:47:50 +0800 Subject: [PATCH] fix: 创建客户端 --- src/main/java/com/example/mina/client/base/A.java | 4 ---- src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java | 14 ++++++++++++++ src/main/java/com/example/mina/client/test/ClientHandler.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/example/mina/client/test/MinaClient.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/example/mina/server/box/rmasm/RmasmMessageEncoder.java | 4 +++- 5 files changed, 111 insertions(+), 5 deletions(-) delete mode 100644 src/main/java/com/example/mina/client/base/A.java create mode 100644 src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java create mode 100644 src/main/java/com/example/mina/client/test/ClientHandler.java create mode 100644 src/main/java/com/example/mina/client/test/MinaClient.java diff --git a/src/main/java/com/example/mina/client/base/A.java b/src/main/java/com/example/mina/client/base/A.java deleted file mode 100644 index cd268ca..0000000 --- a/src/main/java/com/example/mina/client/base/A.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.example.mina.client.base; - -public class A { -} diff --git a/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java b/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java new file mode 100644 index 0000000..bb5b0df --- /dev/null +++ b/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java @@ -0,0 +1,14 @@ +package com.example.mina.client.base; + + +import org.apache.mina.core.service.IoHandlerAdapter; +import org.apache.mina.core.session.IoSession; + +public abstract class AbstractVirtualBoxClientHandler extends IoHandlerAdapter { + + @Override + public void sessionCreated(IoSession session) throws Exception { + System.out.println("客户端创建成功"); + } + +} diff --git a/src/main/java/com/example/mina/client/test/ClientHandler.java b/src/main/java/com/example/mina/client/test/ClientHandler.java new file mode 100644 index 0000000..36ee10a --- /dev/null +++ b/src/main/java/com/example/mina/client/test/ClientHandler.java @@ -0,0 +1,44 @@ +package com.example.mina.client.test; + +import org.apache.mina.core.service.IoHandler; +import org.apache.mina.core.service.IoHandlerAdapter; +import org.apache.mina.core.session.IdleStatus; +import org.apache.mina.core.session.IoSession; +import org.apache.mina.filter.FilterEvent; + +public class ClientHandler extends IoHandlerAdapter { + + @Override + public void sessionOpened(IoSession session) throws Exception { + System.out.println("incomming 客户端: " + session.getRemoteAddress()); + //session.write("i am coming"); + } + + @Override + public void exceptionCaught(IoSession session, Throwable cause) + throws Exception { + System.out.println("客户端发送信息异常...."); + } + + // 当客户端发送消息到达时 + @Override + public void messageReceived(IoSession session, Object message) + throws Exception { + + System.out.println("服务器返回的数据:" + message.toString()); + } + + @Override + public void sessionClosed(IoSession session) throws Exception { + System.out.println("客户端与服务端断开连接....."); + } + + @Override + public void sessionCreated(IoSession session) throws Exception { + // TODO Auto-generated method stub + System.out + .println("one Client Connection" + session.getRemoteAddress()); + session.write("RA 121 456"); + } + +} diff --git a/src/main/java/com/example/mina/client/test/MinaClient.java b/src/main/java/com/example/mina/client/test/MinaClient.java new file mode 100644 index 0000000..9b7624f --- /dev/null +++ b/src/main/java/com/example/mina/client/test/MinaClient.java @@ -0,0 +1,50 @@ +package com.example.mina.client.test; + +import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder; +import org.apache.mina.core.future.ConnectFuture; +import org.apache.mina.core.service.IoConnector; +import org.apache.mina.core.session.IoSession; +import org.apache.mina.filter.codec.ProtocolCodecFilter; +import org.apache.mina.filter.codec.prefixedstring.PrefixedStringCodecFactory; +import org.apache.mina.filter.codec.textline.TextLineCodecFactory; +import org.apache.mina.filter.logging.LoggingFilter; +import org.apache.mina.transport.socket.nio.NioSocketConnector; + +import java.net.InetSocketAddress; +import java.nio.charset.Charset; +import java.util.Scanner; + +public class MinaClient { + + + + public static void main(String[] args) + { + //Create TCP/IP connection + NioSocketConnector connector = new NioSocketConnector(); + + //创建接受数据的过滤器 + DefaultIoFilterChainBuilder chain = connector.getFilterChain(); + + //设定这个过滤器将一行一行(/r/n)的读取数据 + chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory())); + + //客户端的消息处理器:一个SamplMinaServerHander对象 + connector.setHandler(new ClientHandler()); + + //set connect timeout + connector.setConnectTimeout(30); + + //连接到服务器: + ConnectFuture cf = connector.connect(new InetSocketAddress("localhost",9104)); + + //Wait for the connection attempt to be finished. + cf.awaitUninterruptibly(); + + cf.getSession().getCloseFuture().awaitUninterruptibly(); + + connector.dispose(); + + + } +} diff --git a/src/main/java/com/example/mina/server/box/rmasm/RmasmMessageEncoder.java b/src/main/java/com/example/mina/server/box/rmasm/RmasmMessageEncoder.java index 5eb4e42..1cf6eeb 100644 --- a/src/main/java/com/example/mina/server/box/rmasm/RmasmMessageEncoder.java +++ b/src/main/java/com/example/mina/server/box/rmasm/RmasmMessageEncoder.java @@ -13,7 +13,9 @@ public class RmasmMessageEncoder implements ProtocolEncoder { if (message instanceof RmasmResponseMessage) { byte[] result = ((RmasmResponseMessage) message).getResult(); - session.write(IoBuffer.wrap(result)); + //session.write(IoBuffer.wrap(result)); + IoBuffer w = IoBuffer.wrap(result); + session.write(w); } } -- libgit2 0.21.2