private Bootstrap buildBootstrap(ThreadFactory selfFactory) {
        if (selfFactory == null) {
            selfFactory = new DefaultThreadFactory(
                    "sdk-netty-workers", Thread.currentThread().isDaemon());
        }
        EventLoopGroup eventLoopGroup = EventLoopUtil.newEventLoopGroup(
                tcpConfig.getNettyWorkerThreadNum(), tcpConfig.isEnableEpollBusyWait(), selfFactory);
        Bootstrap tmpBootstrap = new Bootstrap();
        tmpBootstrap.group(eventLoopGroup);
        tmpBootstrap.option(ChannelOption.TCP_NODELAY, true);
        tmpBootstrap.option(ChannelOption.SO_REUSEADDR, true);
        tmpBootstrap.channel(EventLoopUtil.getClientSocketChannelClass(eventLoopGroup));
        if (tcpConfig.getRcvBufferSize() > 0) {
            tmpBootstrap.option(ChannelOption.SO_RCVBUF, tcpConfig.getRcvBufferSize());
        }
        if (tcpConfig.getSendBufferSize() > 0) {
            tmpBootstrap.option(ChannelOption.SO_SNDBUF, tcpConfig.getSendBufferSize());
        }
        tmpBootstrap.handler(new ClientPipelineFactory(this));
        return tmpBootstrap;
    }
Build up the connection between the server and client.
inlong-sdk/dataproxy-sdk/src/main/java/org/apache/inlong/sdk/dataproxy/network/tcp/TcpClientMgr.java