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