`
rendong
  • 浏览: 5097 次
社区版块
存档分类
最新评论

关于netty的疑惑

阅读更多
应用场景为 android中使用netty,android关闭无线、gprs,然后随便连接一个ip地址,部分代码
bootstrap.setOption("keepAlive", true);
bootstrap.setOption("tcpNoDelay", true);
bootstrap.setOption("connectTimeoutMillis", CONNECT_TIMEOUT);

// 向目标地址发起一个连接
ChannelFuture connectFuture = bootstrap.connect(inetSocketAddress);

session = connectFuture.awaitUninterruptibly().getChannel();

Log.i("re", "connectFuture.isSuccess()=" + connectFuture.isSuccess());
Log.i("re", "connectFuture.isConnected()=" + session.isConnected());
if (session.isConnected()) {
	businessListener.onServerConnected();
} else {
	businessListener.onServerNetWorkError();
}

竟然 session.isConnected()为true。
打开无线或者gprs,就变得正常,为什么在没人任何网络的情况下session.isConnected()为true呢?
handler代码
private class MinaClientHandler extends SimpleChannelHandler {

		@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
			String theMessage = (String) e.getMessage();
			JSONObject commandJsonObject = new JSONObject(theMessage);
			businessListener.onReceive(commandJsonObject);
		}

public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
			Log.i("re", "channelConnected");
		}

		@Override
		public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) {
			Log.i("re", "channelDisconnected");
		}

		@Override
		public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) {
			Log.i("re", "channelClosed");
		}

		public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) throws Exception {
			Throwable cause = e.getCause();
			cause.printStackTrace();
			// if (cause instanceof SocketException) {
			// ctx.getChannel().close();
			// }
			Log.i("re", "exceptionCaught");
		}
	}

没有任何网络的情况下,handler的 channelConnected channelDisconnected channelClosed 正常调用,不明白netty为什么这样处理,这样就造成当没有任何网络的的情况下,就不能通过session.isConnected()来判断是否连接成功。
分享到:
评论

相关推荐

    Netty学习资料.zip

    通过阅读这些笔记,你可以快速抓住 Netty 的关键点,解决学习过程中的疑惑,例如非阻塞I/O模型、线程模型、编码解码器的使用等。 课件则会系统地呈现 Netty 的各个知识点,可能包括Netty的基本架构(如BossGroup和...

    nettybook2:netty权威指南

    该项目是李林峰老师编写的netty权威指南(第二版)对应的内核。原始原始地址是: : 所以本人将其项目进行简单的maven转换,并且提交到github上。这样同志们就可以直接导入-> git查看。(当然有些有关更ant的操作,...

    NettyBook2:Netty权威指南第二版原始码

    下一步我想将书本中对源码的注解搬到项目中来,这样可以在调试代码的过程中,直接通过注解解决调试中的疑惑。 当然这些工作得到的李林峰老师的同意和认可,不信,你看: ://weibo....

    nettybook2:李林峰老师编写的netty权威指南(第二版)对应的源码,已经maven化

    该项目是李林峰老师编写的netty权威指南(第二版)对应的内核。原始原始地址是: : 所以本人将其项目进行简单的maven转换,并且提交到github上。这样同志们就可以直接导入-> git查看。(当然有些有关更ant的操作,...

    java解惑(转)

    在编程实践中,Java开发者经常会遇到各种疑惑和难题,这些问题可能涵盖语法、类库使用、内存管理、多线程、异常处理等多个方面。这篇博客或文档可能就是为了帮助开发者解决这些困扰,提高编程效率。 【描述】提到的...

Global site tag (gtag.js) - Google Analytics