Commit 7af2683e9bfcc4ead1417b80f77a831e0143ab5d

Authored by dy
1 parent c2886db3
Exists in develop

fix: 修改客户端代码

src/main/java/com/example/mina/client/aeroflex/AeroflexClient.java
... ... @@ -2,7 +2,10 @@ package com.example.mina.client.aeroflex;
2 2  
3 3 import com.example.mina.client.base.AbstractClient;
4 4 import com.example.mina.client.base.AbstractVirtualBoxClientHandler;
  5 +import com.example.mina.client.coder.ByteFactory;
  6 +import com.example.mina.client.entity.Command;
5 7 import org.apache.mina.filter.codec.ProtocolCodecFactory;
  8 +import org.springframework.boot.ApplicationArguments;
6 9  
7 10 /**
8 11 * @author dy
... ... @@ -39,4 +42,5 @@ public class AeroflexClient extends AbstractClient {
39 42 public int[][] getAll() {
40 43 return new int[0][];
41 44 }
  45 +
42 46 }
... ...
src/main/java/com/example/mina/client/aeroflex/AeroflexClientHandler.java
... ... @@ -8,7 +8,14 @@ import com.example.mina.client.entity.Command;
8 8 * @date 2021/3/10
9 9 */
10 10 public class AeroflexClientHandler extends AbstractVirtualBoxClientHandler {
11   - public AeroflexClientHandler(Command command) {
12   - super(new Command("AeroflexClient", new byte[4]));
  11 +
  12 + @Override
  13 + protected void addCommand() {
  14 + command = Command.builder().description("AeroflexClient")
  15 + .bytes("ATTN".getBytes())
  16 + .host("localhost")
  17 + .port(9100)
  18 + .build();
  19 +
13 20 }
14 21 }
... ...
src/main/java/com/example/mina/client/base/AbstractClient.java
... ... @@ -4,6 +4,8 @@ import org.apache.mina.core.service.IoConnector;
4 4 import org.apache.mina.filter.codec.ProtocolCodecFactory;
5 5 import org.apache.mina.filter.codec.ProtocolCodecFilter;
6 6 import org.apache.mina.transport.socket.nio.NioSocketConnector;
  7 +import org.springframework.boot.ApplicationArguments;
  8 +import org.springframework.boot.ApplicationRunner;
7 9  
8 10 import java.net.InetSocketAddress;
9 11  
... ... @@ -25,7 +27,7 @@ public abstract class AbstractClient {
25 27  
26 28 protected abstract void getBoxName();
27 29  
28   - public void start(String host, int port) {
  30 + public void start() {
29 31 //1、创建客户端IoService
30 32 IoConnector connector = new NioSocketConnector();
31 33 //客户端链接超时时间
... ... @@ -35,7 +37,8 @@ public abstract class AbstractClient {
35 37 //3、客户端IoHandler,发生消息
36 38 connector.setHandler(abstractVirtualBoxClientHandler);
37 39 //连接服务端
38   - connector.connect(new InetSocketAddress(host, port));
  40 + connector.connect(new InetSocketAddress(abstractVirtualBoxClientHandler.command.getHost(),
  41 + abstractVirtualBoxClientHandler.command.getPort()));
39 42 }
40 43  
41 44 public boolean isConnected() {
... ...
src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java
... ... @@ -18,10 +18,12 @@ public abstract class AbstractVirtualBoxClientHandler extends IoHandlerAdapter {
18 18  
19 19 protected Command command;
20 20  
21   - public AbstractVirtualBoxClientHandler(Command command) {
22   - this.command = command;
  21 + public AbstractVirtualBoxClientHandler() {
  22 + addCommand();
23 23 }
24 24  
  25 + protected abstract void addCommand();
  26 +
25 27 @Override
26 28 public void exceptionCaught(IoSession session, Throwable throwable) {
27 29 System.out.println("客户端exceptionCaught被调用!");
... ...
src/main/java/com/example/mina/client/entity/Command.java
1 1 package com.example.mina.client.entity;
2 2  
3 3 import com.example.mina.server.util.LogUtils;
  4 +import lombok.Builder;
  5 +import lombok.Data;
4 6  
5 7 /**
6 8 * @author dy
7 9 * @date 2021/03/10
8 10 */
  11 +@Data
  12 +@Builder
9 13 public class Command {
10 14 private String description;
11 15 private byte[] bytes;
  16 + private String host;
  17 + private int port;
12 18  
13   - public Command(String description, byte[] bytes) {
  19 + public Command(String description, byte[] bytes, String host, int port) {
14 20 this.description = description;
15 21 this.bytes = bytes;
  22 + this.host = host;
  23 + this.port = port;
16 24 }
17 25  
18 26 @Override
... ... @@ -20,19 +28,4 @@ public class Command {
20 28 return description + " " + LogUtils.toHexString(bytes);
21 29 }
22 30  
23   - public String getDescription() {
24   - return description;
25   - }
26   -
27   - public void setDescription(String description) {
28   - this.description = description;
29   - }
30   -
31   - public byte[] getBytes() {
32   - return bytes;
33   - }
34   -
35   - public void setBytes(byte[] bytes) {
36   - this.bytes = bytes;
37   - }
38 31 }
... ...
src/main/java/com/example/mina/client/test/MinaClient.java
... ... @@ -3,7 +3,6 @@ package com.example.mina.client.test;
3 3 import com.example.mina.client.aeroflex.AeroflexClient;
4 4 import com.example.mina.client.aeroflex.AeroflexClientHandler;
5 5 import com.example.mina.client.coder.ByteFactory;
6   -import com.example.mina.client.entity.Command;
7 6  
8 7 public class MinaClient {
9 8  
... ... @@ -33,8 +32,7 @@ public class MinaClient {
33 32 // cf.getSession().getCloseFuture().awaitUninterruptibly();
34 33 //
35 34 // connector.dispose();
36   - new AeroflexClient(new ByteFactory(), new AeroflexClientHandler(new Command("AeroflexClient", new byte[4])))
37   - .start("localhost", 9100);
  35 + new AeroflexClient(new ByteFactory(), new AeroflexClientHandler()).start();
38 36  
39 37  
40 38 }
... ...