Tcp 什么是棘手的通道状态转换?
Netty频道有多个状态,但我找不到任何状态 关于实际状态转换的文档。最接近任何 我可以在Netty 3.2.x系统中找到关于这方面的文档 我能够找到通道可能处于的状态 但是,没有任何东西可以描述 通道可以从一个状态切换到另一个状态。看来并非所有Tcp 什么是棘手的通道状态转换?,tcp,udp,netty,datagram,socketchannel,Tcp,Udp,Netty,Datagram,Socketchannel,Netty频道有多个状态,但我找不到任何状态 关于实际状态转换的文档。最接近任何 我可以在Netty 3.2.x系统中找到关于这方面的文档 我能够找到通道可能处于的状态 但是,没有任何东西可以描述 通道可以从一个状态切换到另一个状态。看来并非所有 通道实现所有可能的状态转换。不同的Netty通道确实具有不同的状态转换 通常,基于TCP的服务器可能的状态转换 渠道包括: OPEN -> ( BOUND -> UNBOUND )* -> CLOSE 如果您正在管道中使用Sim
通道实现所有可能的状态转换。不同的Netty通道确实具有不同的状态转换 通常,基于TCP的服务器可能的状态转换 渠道包括:
OPEN -> ( BOUND -> UNBOUND )* -> CLOSE
如果您正在管道中使用SimpleChannelHandler子类
当以下情况之一发生时,处理上游事件的等效方法
发生的这些状态更改是:
channelOpen
channelBound
channelUnbound
channelClose
服务器通道永远不会进入连接状态
服务器通道一旦恢复,很少会返回到绑定状态
移动到未绑定状态,但这似乎是相关的
关于应用程序,请参阅
请注意,服务器通道可以在打开子通道时触发事件
打开或关闭。这些事件只能在服务器启动后发生
通道处于绑定状态。当发送这些事件时
上游代表服务器通道,然后在
您的SimpleChannelHandler子类被称为:
childChannelOpen
childChannelClosed
基于TCP的子通道和客户端通道的可能状态转换
它们是:
首先进入已连接的状态似乎是不正确的
在频道代码内强制执行;然而,这种状态总是存在的
Netty中的子通道和客户端通道都首先触发
将通道移动到连接状态之前的框架
如果您在中使用的是SimpleChannelHandler或其子类
您的管道等效方法包括:
channelOpen
channelBound
channelConnected
channelDisconnected
channelUnbound
channelClose
基于TCP的通道在执行任何操作之前必须处于连接状态
可以读取或写入通道。这包括服务器通道,
它永远不会被读或写,这不是一个很大的问题
令人惊讶的是,服务器通道总是只用于管理
代表服务器执行连接操作
数据报套接字与基于TCP的套接字在以下方面的操作不同
它们可以用来读取和写入数据,而不需要实际操作
已连接(尽管连接数据报套接字的速度可能会更快
避免安全检查)。可以有效地使用数据报套接字
使用列出的基于TCP的子级和
上面描述的服务器通道。很好的评论,谢谢,它是基于一些tcp文章还是仅仅阅读netty源?还有一个问题:如果我需要计算客户端对远程对等方的活动连接计数,那么在
channelConnected
中增加和在channelDisconnected
中减少是否足够?如果保持活动状态
连接和其他功能,计数器是否准确?谢谢我阅读了消息来源以了解详情。我想我可以省去别人的麻烦,以防他们有类似的问题。WRT active connection count,在channelConnected
中增加计数器,在channelDisconnected
中减少计数器就足够了。HTTP keep alive和TCP结构上的类似协议对Netty没有影响,除非应用程序间接控制套接字连接。
channelOpen
channelBound
channelConnected
channelDisconnected
channelUnbound
channelClose