123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package com.persagy.socket;
- import java.net.InetSocketAddress;
- import io.netty.bootstrap.Bootstrap;
- import io.netty.channel.ChannelFuture;
- import io.netty.channel.ChannelInitializer;
- import io.netty.channel.EventLoopGroup;
- import io.netty.channel.nio.NioEventLoopGroup;
- import io.netty.channel.socket.SocketChannel;
- import io.netty.channel.socket.nio.NioSocketChannel;
- import io.netty.handler.codec.string.StringDecoder;
- import io.netty.handler.codec.string.StringEncoder;
- import io.netty.util.CharsetUtil;
- import lombok.extern.slf4j.Slf4j;
- /**
- *
- * @version 1.0.0
- * @company persagy
- * @author zhangqiankun
- * @date 2021年10月12日 上午10:06:34
- */
- @Slf4j
- public class IotSocketClient {
- public static final EventLoopGroup GROUP = new NioEventLoopGroup(1);
- public static final Bootstrap BS = new Bootstrap();
- static {
- // 注册线程池、使用NioSocketChannel来作为连接用的channel类
- BS.group(GROUP).channel(NioSocketChannel.class);
- }
-
- public static boolean connectAndSend(String host, int port, String command) {
- boolean result = false;
- ChannelFuture cf = null;
- try {
- BS.remoteAddress(new InetSocketAddress(host, port)) // 绑定连接端口和host信息
- .handler(new ChannelInitializer<SocketChannel>() { // 绑定连接初始化器
- @Override
- protected void initChannel(SocketChannel ch) throws Exception {
- log.info("正在连接中...");
- ch.pipeline().addLast(new StringEncoder(CharsetUtil.UTF_8));
- ch.pipeline().addLast(new StringDecoder(CharsetUtil.UTF_8));
- ch.pipeline().addLast(new IotClientHandler(command));
- }
- });
- cf = BS.connect().sync(); // 异步连接服务器
- log.info("服务端连接成功...");
-
- result = true;
- } catch (Exception e) {
- log.error("与服务端建立连接失败", e);
- } finally {
- if (cf != null) {
- try {
- cf.channel().closeFuture().sync();
- log.info("连接已关闭..");
- } catch (Exception e2) {
- log.error("未知异常", e2);
- }
- }
- }
-
- return result;
- }
- public static void main(String[] args) throws Exception {
- IotSocketClient.connectAndSend("192.168.100.102", 30054, "(5001120003;1;report;20220617100000;17107;ZD1060;1;902;155)");
- }
-
- }
|