netty ChannelFuture

@Slf4j
public class HelloClient {
    public static void main(String[] args) throws InterruptedException {
        // future和promise 的类型都是和异步方法配套使用,用来处理结果
        ChannelFuture channelFuture = new Bootstrap()
                .group(new NioEventLoopGroup())
                .channel(NioSocketChannel.class)
                .handler(new ChannelInitializer<NioSocketChannel>() {
                    @Override
                    protected void initChannel(NioSocketChannel ch) throws Exception {
                        ch.pipeline().addLast(new StringEncoder());
                    }
                })
                // 异步非阻塞方法,调用线程不关心结果
                // 当前调用connect是主线程,真正执行connect的是nio 线程
                .connect(new InetSocketAddress("localhost", 8888));


//        // 阻塞方法,直到连接建立后才执行
//        // 使用sync 方法同步处理结果
//        // 2.1 阻塞当前线程,直到nio线程连接建立完毕
//        channelFuture.sync();
//
//        // 客户端和服务器之前连接对象
//        Channel channel = channelFuture.channel();
//        log.info("_____________:{}",channel.toString());
//        // 收发数据都走handler
//        channel.writeAndFlush("hello,hhh");
//
//        System.out.println("");

        // 2.2 使用addListener 方法异步处理结果
        channelFuture.addListener(new ChannelFutureListener() {
            // 在nio 连接建立好之后会调用operationComplete
            @Override
            public void operationComplete(ChannelFuture future) throws Exception {
                Channel channel = future.channel();
                log.info("{}",channel);
                channel.writeAndFlush("hello");
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值