Commit 521dc336bf1f6846cce16d8edcc69242ef316561

Authored by dy
1 parent 8c83af30
Exists in develop

fix: IoSession逻辑修改

src/main/java/com/example/mina/client/base/AbstractClient.java
... ... @@ -2,7 +2,9 @@ package com.example.mina.client.base;
2 2  
3 3 import com.example.mina.client.entity.AbstractClientMessage;
4 4 import com.example.mina.server.base.AbstractHardwareDataBuffer;
  5 +import org.apache.mina.core.future.ConnectFuture;
5 6 import org.apache.mina.core.service.IoConnector;
  7 +import org.apache.mina.core.session.IoSession;
6 8 import org.apache.mina.filter.codec.ProtocolCodecFactory;
7 9 import org.apache.mina.filter.codec.ProtocolCodecFilter;
8 10 import org.apache.mina.transport.socket.nio.NioSocketConnector;
... ... @@ -23,6 +25,8 @@ public abstract class AbstractClient {
23 25  
24 26 protected AbstractClientMessage abstractClientMessage;
25 27  
  28 + protected IoSession ioSession;
  29 +
26 30 protected AbstractClient() {
27 31 initHardwareDataBuffer();
28 32 initClientMessage();
... ... @@ -45,8 +49,13 @@ public abstract class AbstractClient {
45 49 //3、客户端IoHandler,发生消息
46 50 connector.setHandler(abstractVirtualBoxClientHandler);
47 51 //连接服务端
48   - connector.connect(new InetSocketAddress(abstractVirtualBoxClientHandler.getClientMessage().getHost(),
  52 + ConnectFuture connectFuture = connector.connect(new InetSocketAddress(abstractVirtualBoxClientHandler.getClientMessage().getHost(),
49 53 abstractVirtualBoxClientHandler.getClientMessage().getPort()));
  54 + // 等待建立连接
  55 + connectFuture.awaitUninterruptibly();
  56 + // 获取连接会话
  57 + this.ioSession = connectFuture.getSession();
  58 + setAttenuation(1, 1, 10);
50 59 }
51 60  
52 61 public boolean isConnected() {
... ...
src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java
... ... @@ -77,7 +77,7 @@ public abstract class AbstractVirtualBoxClientHandler extends IoHandlerAdapter {
77 77 // for (int i = 0; i < clientMessage.getCommands().size(); i++) {
78 78 // handleOneCommand(i, session);
79 79 // }
80   - handleOneCommand(1, session);
  80 +// handleOneCommand(1, session);
81 81 System.out.println("客户端sessionOpened被调用!");
82 82 System.out.println("client端打开连接");
83 83 }
... ...
src/main/java/com/example/mina/client/lte3000/Lte3000Client.java
1 1 package com.example.mina.client.lte3000;
2 2  
3   -import com.example.mina.client.aeroflex.AeroflexClientHandler;
4 3 import com.example.mina.client.base.AbstractClient;
5 4 import com.example.mina.client.coder.ByteFactory;
6 5 import com.example.mina.client.entity.AbstractClientMessage;
... ... @@ -45,6 +44,7 @@ public class Lte3000Client extends AbstractClient {
45 44  
46 45 @Override
47 46 public boolean setAttenuation(int row, int col, int attenuation) {
  47 + ioSession.write("abcdfd".getBytes());
48 48 return false;
49 49 }
50 50  
... ...