| | |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 通讯协议 |
| | | * 游仙主库,通讯协议 |
| | | */ |
| | | @Slf4j |
| | | public class ClientEngine implements Runnable { |
| | |
| | | |
| | | private String host; |
| | | private int port; |
| | | private Channel defaultChannel; |
| | | public static Channel defaultChannel; |
| | | |
| | | |
| | | public ClientEngine(String host, int port) { |
| | |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | |
| | | startClient(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | } |
| | | |
| | | public void startClient() throws Exception { |
| | | |
| | | if(defaultChannel != null){ |
| | | log.info("-----IP={},连接存在,直接使用",host); |
| | | return; |
| | | } |
| | | EventLoopGroup group = new OioEventLoopGroup(); |
| | | Bootstrap b = new Bootstrap(); |
| | | //默认长连接 |
| | |
| | | @Override |
| | | public void operationComplete(ChannelFuture arg0) throws Exception { |
| | | if (channelFuture.isSuccess()) { |
| | | log.info("-----IP={},连接成功", host); |
| | | log.info("-----IP={},连接成功",host); |
| | | } else { |
| | | log.info("-----IP={},连接失败,自动关闭线程", host); |
| | | log.info("-----IP={},连接失败,自动关闭线程",host); |
| | | channelFuture.cause().printStackTrace(); |
| | | group.shutdownGracefully(); // 关闭线程组 |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | public Channel getChannel() { |
| | | public static Channel getChannel() { |
| | | return defaultChannel; |
| | | } |
| | | |
| | | public static void add2ChannelMap(String key, Channel channel) { |
| | | public void add2ChannelMap(String key, Channel channel) { |
| | | clientChannelMap.put(key, channel); |
| | | } |
| | | |
| | |
| | | * @param key |
| | | * @return |
| | | */ |
| | | public static Channel getChannel(String key) { |
| | | public static Channel getChannel(String key) { |
| | | Channel channel = clientChannelMap.get(key); |
| | | if (null == channel) return null; |
| | | if (channel.isActive()) { |
| | | return channel; |
| | | } else { |
| | | channel.close(); |
| | | defaultChannel = null; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static InvokeResult send2(String hex, Channel channel) throws InterruptedException { |
| | | public static InvokeResult send2(String hex,Channel channel) throws InterruptedException { |
| | | if (null == channel) { |
| | | return InvokeResult.SOCKET_NOT_CREATE; |
| | | } |