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 @@ |
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 | ... | ... |