如何在整个“会话”中保持 Netty NIODatagram 通道打开
Posted
技术标签:
【中文标题】如何在整个“会话”中保持 Netty NIODatagram 通道打开【英文标题】:How can I keep Netty NIODatagram channels open throughout a "session" 【发布时间】:2020-08-27 01:41:58 【问题描述】:我正在尝试将 Mina 项目转换为使用 Netty,并且在尝试提出适当的代码进行建模时遇到了困难。
我的 NioDatagram 客户端必须在虚拟“会话”期间与服务器交换多个身份验证数据包。我正在尝试重用频道并避免频道创建和拆除的开销。
我遇到的为数不多的 NioDatagram 示例中的大多数都是玩具。他们发送一个数据包做很多事情,比如:
try
handleRxDatagram(ctx, packet);
finally
**ctx.close();**
ch.writeAndFlush(new DatagramPacket(bbuf, toAddress)).sync();
boolean succ = ch.closeFuture().await(10, TimeUnit.SECONDS);
if (!succ)
System.err.println("query timeout!");
**ch.close().sync();**
无论我尝试什么,我要么结束数据包要么不发送,要么不接收。
毫无疑问,我的很多问题都是由于我对 Netty 的无知和不熟悉造成的,但是 NIO UDP 似乎是 Netty 项目的可怜的典型代表。应该不会这么难。
【问题讨论】:
【参考方案1】:我不确定您到底要什么....除了您写和接收DatagramPacket
之外,它与SocketChannel
没有什么不同。如果您不想关闭DatagramChannel
,请不要关闭它。
【讨论】:
感谢公认专家的快速反应。你能指出一些重要的例子吗?以上是关于如何在整个“会话”中保持 Netty NIODatagram 通道打开的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Security 中使用 Oauth2 手动进行身份验证不会在整个会话期间保持 SecurityContext
在我单击注销按钮之前,如何在 php 中保持会话? [复制]