diff --git a/src/main/java/com/example/mina/client/aeroflex/AeroflexClient.java b/src/main/java/com/example/mina/client/aeroflex/AeroflexClient.java index 81f58cd..d89e776 100644 --- a/src/main/java/com/example/mina/client/aeroflex/AeroflexClient.java +++ b/src/main/java/com/example/mina/client/aeroflex/AeroflexClient.java @@ -2,7 +2,10 @@ package com.example.mina.client.aeroflex; import com.example.mina.client.base.AbstractClient; import com.example.mina.client.base.AbstractVirtualBoxClientHandler; +import com.example.mina.client.coder.ByteFactory; +import com.example.mina.client.entity.Command; import org.apache.mina.filter.codec.ProtocolCodecFactory; +import org.springframework.boot.ApplicationArguments; /** * @author dy @@ -39,4 +42,5 @@ public class AeroflexClient extends AbstractClient { public int[][] getAll() { return new int[0][]; } + } diff --git a/src/main/java/com/example/mina/client/aeroflex/AeroflexClientHandler.java b/src/main/java/com/example/mina/client/aeroflex/AeroflexClientHandler.java index 0706004..6ab4d75 100644 --- a/src/main/java/com/example/mina/client/aeroflex/AeroflexClientHandler.java +++ b/src/main/java/com/example/mina/client/aeroflex/AeroflexClientHandler.java @@ -8,7 +8,14 @@ import com.example.mina.client.entity.Command; * @date 2021/3/10 */ public class AeroflexClientHandler extends AbstractVirtualBoxClientHandler { - public AeroflexClientHandler(Command command) { - super(new Command("AeroflexClient", new byte[4])); + + @Override + protected void addCommand() { + command = Command.builder().description("AeroflexClient") + .bytes("ATTN".getBytes()) + .host("localhost") + .port(9100) + .build(); + } } diff --git a/src/main/java/com/example/mina/client/base/AbstractClient.java b/src/main/java/com/example/mina/client/base/AbstractClient.java index 4309c73..e683a19 100644 --- a/src/main/java/com/example/mina/client/base/AbstractClient.java +++ b/src/main/java/com/example/mina/client/base/AbstractClient.java @@ -4,6 +4,8 @@ import org.apache.mina.core.service.IoConnector; import org.apache.mina.filter.codec.ProtocolCodecFactory; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.transport.socket.nio.NioSocketConnector; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; import java.net.InetSocketAddress; @@ -25,7 +27,7 @@ public abstract class AbstractClient { protected abstract void getBoxName(); - public void start(String host, int port) { + public void start() { //1、创建客户端IoService IoConnector connector = new NioSocketConnector(); //客户端链接超时时间 @@ -35,7 +37,8 @@ public abstract class AbstractClient { //3、客户端IoHandler,发生消息 connector.setHandler(abstractVirtualBoxClientHandler); //连接服务端 - connector.connect(new InetSocketAddress(host, port)); + connector.connect(new InetSocketAddress(abstractVirtualBoxClientHandler.command.getHost(), + abstractVirtualBoxClientHandler.command.getPort())); } public boolean isConnected() { diff --git a/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java b/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java index 8fb41dc..964ddb7 100644 --- a/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java +++ b/src/main/java/com/example/mina/client/base/AbstractVirtualBoxClientHandler.java @@ -18,10 +18,12 @@ public abstract class AbstractVirtualBoxClientHandler extends IoHandlerAdapter { protected Command command; - public AbstractVirtualBoxClientHandler(Command command) { - this.command = command; + public AbstractVirtualBoxClientHandler() { + addCommand(); } + protected abstract void addCommand(); + @Override public void exceptionCaught(IoSession session, Throwable throwable) { System.out.println("客户端exceptionCaught被调用!"); diff --git a/src/main/java/com/example/mina/client/entity/Command.java b/src/main/java/com/example/mina/client/entity/Command.java index 04db4de..d85bcc4 100644 --- a/src/main/java/com/example/mina/client/entity/Command.java +++ b/src/main/java/com/example/mina/client/entity/Command.java @@ -1,18 +1,26 @@ package com.example.mina.client.entity; import com.example.mina.server.util.LogUtils; +import lombok.Builder; +import lombok.Data; /** * @author dy * @date 2021/03/10 */ +@Data +@Builder public class Command { private String description; private byte[] bytes; + private String host; + private int port; - public Command(String description, byte[] bytes) { + public Command(String description, byte[] bytes, String host, int port) { this.description = description; this.bytes = bytes; + this.host = host; + this.port = port; } @Override @@ -20,19 +28,4 @@ public class Command { return description + " " + LogUtils.toHexString(bytes); } - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public byte[] getBytes() { - return bytes; - } - - public void setBytes(byte[] bytes) { - this.bytes = bytes; - } } diff --git a/src/main/java/com/example/mina/client/test/MinaClient.java b/src/main/java/com/example/mina/client/test/MinaClient.java index 4609bfb..eabbb24 100644 --- a/src/main/java/com/example/mina/client/test/MinaClient.java +++ b/src/main/java/com/example/mina/client/test/MinaClient.java @@ -3,7 +3,6 @@ package com.example.mina.client.test; import com.example.mina.client.aeroflex.AeroflexClient; import com.example.mina.client.aeroflex.AeroflexClientHandler; import com.example.mina.client.coder.ByteFactory; -import com.example.mina.client.entity.Command; public class MinaClient { @@ -33,8 +32,7 @@ public class MinaClient { // cf.getSession().getCloseFuture().awaitUninterruptibly(); // // connector.dispose(); - new AeroflexClient(new ByteFactory(), new AeroflexClientHandler(new Command("AeroflexClient", new byte[4]))) - .start("localhost", 9100); + new AeroflexClient(new ByteFactory(), new AeroflexClientHandler()).start(); } -- libgit2 0.21.2