package com.example.mina.client.base; 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; /** * @author dy * @date 2021/3/10 */ public abstract class AbstractClient { private final ProtocolCodecFactory protocolCodecFactory; private final AbstractVirtualBoxClientHandler abstractVirtualBoxClientHandler; protected AbstractClient(ProtocolCodecFactory protocolCodecFactory, AbstractVirtualBoxClientHandler abstractVirtualBoxClientHandler) { this.protocolCodecFactory = protocolCodecFactory; this.abstractVirtualBoxClientHandler = abstractVirtualBoxClientHandler; } protected abstract void getBoxName(); public void start() { //1、创建客户端IoService IoConnector connector = new NioSocketConnector(); //客户端链接超时时间 connector.setConnectTimeoutMillis(30000); //2、客户端过滤器 connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(protocolCodecFactory)); //3、客户端IoHandler,发生消息 connector.setHandler(abstractVirtualBoxClientHandler); //连接服务端 connector.connect(new InetSocketAddress(abstractVirtualBoxClientHandler.command.getHost(), abstractVirtualBoxClientHandler.command.getPort())); } public boolean isConnected() { return false; } public void close() { } abstract public boolean setAttenuation(int row, int col, int attenuation); abstract public int getAttenuation(int row, int col); abstract public Boolean reset(); abstract public int[][] getAll(); }