关于使用netty中的ChannelFuture.isSuccess()一直失败

学习netty遇到的坑

最近学习netty中,写好的client和server后测试连接,使用如下的测试代码

ChannelFuture future =st.connect("localhost", 9093);
		while(!future.isSuccess()) {
     
			log.info("连接失败 !!!");
			future = st.connect("localhost", 9093);
		}

结果一直连接失败,仔细检查,发现代码没有毛病,然后关闭client,这时候发现server报错

java.io.IOException: 远程主机强迫关闭了一个现有的连接。
			......................

这不是断开连接的报错吗,难道future为否但是却连接上了吗,于是我修改为

ChannelFuture future =st.connect("localhost", 9093);
			Thread.sleep(1000);
			while(!future.isSuccess()) {
     
				log.info("连接失败 !!!");
				future = st.connect("localhost", 9093);
				Thread.sleep(1000);
			}

这下没问题了,可以理解为主线程跑的太快了,连接还没来得及更改future的状态就跑判断那去了

你可能感兴趣的:(错误归档,netty,java,后端)