Commit 2e6f208cc63d2f9fefd4907313c8b7f1f86e1f74
1 parent
5aac4950
Exists in
develop
fix: 创建客户端
Showing
5 changed files
with
111 additions
and
5 deletions
Show diff stats
src/main/java/com/example/mina/client/base/A.java
src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java
0 → 100644
@@ -0,0 +1,14 @@ | @@ -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 @@ | @@ -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 @@ | @@ -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,7 +13,9 @@ public class RmasmMessageEncoder implements ProtocolEncoder { | ||
13 | if (message instanceof RmasmResponseMessage) { | 13 | if (message instanceof RmasmResponseMessage) { |
14 | 14 | ||
15 | byte[] result = ((RmasmResponseMessage) message).getResult(); | 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 |