package com.example.mina.client.base; import com.example.mina.client.entity.AbstractClientMessage; import com.example.mina.client.entity.ClientDTO; import com.example.mina.client.service.ServerService; import com.example.mina.client.service.impl.ServerServiceImpl; import com.example.mina.server.base.AbstractHardwareDataBuffer; import org.apache.mina.core.future.ConnectFuture; import org.apache.mina.core.service.IoConnector; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolCodecFactory; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.transport.socket.nio.NioSocketConnector; import java.net.InetSocketAddress; /** * @author dy * @date 2021/3/10 */ public abstract class AbstractClient { protected ProtocolCodecFactory protocolCodecFactory; protected AbstractVirtualBoxClientHandler abstractVirtualBoxClientHandler; protected AbstractHardwareDataBuffer hardwareDataBuffer; protected AbstractClientMessage abstractClientMessage; protected IoSession ioSession; protected ServerService serverService = new ServerServiceImpl(); protected AbstractClient() { init(); } protected abstract void init(); public void start(ClientDTO clientDTO) { //1、创建客户端IoService IoConnector connector = new NioSocketConnector(); //客户端链接超时时间 connector.setConnectTimeoutMillis(30000); //2、客户端过滤器 connector.getFilterChain().addLast("codec", new ProtocolCodecFilter(protocolCodecFactory)); //3、客户端IoHandler,发生消息 connector.setHandler(abstractVirtualBoxClientHandler); //连接服务端 ConnectFuture connectFuture = connector.connect(new InetSocketAddress(abstractClientMessage.getServerMessage().getHost(), abstractClientMessage.getServerMessage().getPort())); // 等待建立连接 connectFuture.awaitUninterruptibly(); // 获取连接会话 int a = getAttenuation(3); this.ioSession = connectFuture.getSession(); //setAttenuation(clientDTO); int b = getAttenuation(3); } abstract public int getAttenuation(int col); /*public boolean isConnected() { return false; }*/ //public void close() {} abstract public void setAttenuation(ClientDTO clientDTO); //abstract public Boolean reset(); //abstract public int[][] getAll(); }