Netty LocalChannel/LocalServerChannel是否序列化写入它们的数据?

我想使用LocalChannel&LocalServerChannel在客户机和服务器之间建立一个jvm内链接。我想知道我是否可以通过它们之间的通道不加更改地传递对象,而不必一路上对它们进行编码/解码。您可以通过对象而不必进行常规编码/解码,消息事件在成对的通道之间直接交换。有这样的例子吗?或者是简单地说,messageReceived上附加的消息就是我通过通道发送的原始对象?

netty 3.3.1 ChannelLocal如何清空以防止内存泄漏?

因此,当在通道上跨处理程序共享项目时,ChannelLocal(带有助理put和get)是3.3.1中的解决方案 当我处理完我的处理程序链后,ChannelLocal是否会自动意识到我的通道已关闭并清空它在ChannelLocal中的条目?或者,在完成共享对象后,是否需要显式地“null”或清空ChannelLocal 也就是说,如果我使用ChannelLocal,并且在使用完之后没有显式地清空我放入其中的项,我会有内存泄漏吗 翻阅源代码注释让我无法确定垃圾收集是如何与这些项交互的 如果使用参数

Netty HttpChunckAggregator状态-->;比赛条件?

也许这是一个显而易见的问题,但我对内蒂太陌生了 看看HttpChunckAggregator类,我发现它是有状态的。这让我怀疑。。。给定具有以下管道的特定通道: private MyServerHandler handler; public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = pipeline(); pipeline.addL

Netty 在哪里可以看到Channel.write()的内容

我是netty的新手,正在尝试他们网站上的例子。我正在为3.9版编写HttpFileServer,在处理程序类中我看到了这一点 Channel ch = e.getChannel(); // Write the initial line and the header. ch.write(response); 在何处/如何查看写入通道实例的内容?您可以向通道管道添加LoggingHandler。这将注销所有接收和写入的数据。很抱歉,我没有接受您之前的回答。这是我发布的第

Netty IdleStateHandler自3.5.9.Final(3.x)起未触发IdleStateEvent

我正在尝试在空闲超时之后,使用IdleStateHandler关闭来自netty服务器的空闲连接,类似于。 有些人认为这对我不起作用。调试了该问题并发现计时器实际上触发了“IdleStateEvent”事件,一旦超时,在将其添加到队列“AbstractNioSelector.taskQueue”后,它就会从“IdleStateHandler.fireChannelIdle”方法中丢失。它是在3.5.9.Final中引入的,但是如果我使用netty 3.5.8.Final版本,它就可以正常工作 我

ServerBootstrap.group()的Netty文档错误?

ServerBootstrap.group()方法的netty javadoc如下所示: 我认为SocketChannel应该是ServerChannel 我使用的是Netty 4.0.24。最终版你说得对。。。请打开带有修复程序的PR: 谢谢诺曼·莫勒先生。我正在读你的书《行动中的内蒂》。这是一本好书。(它比v5好得多。^ ^)我可以问一下最新的netty 5.0是否有更新吗?

将2台Netty服务器合并为一台

我有一个Netty服务器(基本上取自Netty示例ObjectEchoServer),它运行在OSGi插件中。服务器绑定到端口51515,并且正以其应有的方式工作。到目前为止,我了解基本概念 现在我也需要在我的插件中添加某种“嵌入式Http”服务器。我已经从Netty示例中删除了HTTPServer,并对其进行了修改,以满足我的需要。服务器绑定到一个单独的端口51516 我需要一些帮助,把两台服务器连接起来。这两个服务器只在处理程序上有所不同 ObjectEcho extends SimpleC

如何为多输出类型设计Netty服务器

在http中,我们可以实现多个URL来执行不同的操作。我们如何使用Netty服务器实现同样的目标? 更明确地说,我必须根据请求从netty服务器输出四种类型的google protobuf(也有四种类型)。我应该为每种请求类型创建单独的Netty服务器,还是在同一管道中有不同的处理程序?在后一种情况下,我必须有至少4*3=12个处理程序(对于每个请求类型,一个入站protobuf处理程序、一个出站protobuf处理程序和一个业务逻辑处理程序)。这是一个好的设计吗? < P>有几种不同的设计方案

Netty:事件循环组和自定义事件

我可以使用netty事件组执行自定义任务吗?我需要与套接字通道相同的功能,即我想向事件循环注册我的对象,并在特定线程上反复执行它?当然可以这样做。获取频道的EventLoop,然后使用它实现的任何ScheduledExecutorService方法都很容易。也就是说,您需要确保在这些计划任务中不执行任何阻塞调用,否则您将阻塞EventLoop,并且在任务完成之前,EventLoop上不会发生任何I/O(这将影响使用此EventLoop的所有频道) 例如,这是在EventLoop上执行任务的方式:

完成后是否安全地擦除/擦拭gRPC/Netty ByteBuf?

当然,在使用TLS接收和发送敏感数据之后,我希望尽快擦除信息,而不是等待Netty ByteBuf/ByteBuffers被重用或垃圾收集和重用。如何最好地实现这一点 理想情况下,解决方案应该在代码中的一个点上完成,最好在Netty上运行时与gRPC一起工作 我注意到有ByteBuf.release、Cleaner.freeDirectByteBuffer、PoolArena.destroyChunk、AbstractReferenceCountedByteBuf.deallocate等,但如果

Netty 如何将消息发送到指定的通道

我正在尝试使用Netty4.0alpha8中的websocketx服务器演示 当我将注册的频道保存到静态最终DefaultChannelGroup时,很容易将消息写入所有频道,其中包括:allChannels.writemessage 但我想用通道id将消息写入指定通道,我使用了以下方法: final static ChannelGroup allChannels = new DefaultChannelGroup("registeredChannel"); public void chann

Netty UDP网络设置选项、无连接引导或信道配置

我使用的是Netty 3.6.6 Final,我希望在UDP Netty IO客户端实现中设置sendBufferSize和receiveBufferSize选项,ConnectionlessBootstrap setOption()和ChannelConfig setOption()之间有什么区别?我应该使用两种setOption方法中的哪一种?这有关系吗 DatagramChannelFactory datagramChannelFactory = new NioDatagramChanne

Netty:奇怪的IndexOutOfBoundsException:readerIndex+;长度超过writerIndex

我目前正在通过netty发送不同的数据包,在收到这些数据包时,我经常会遇到类似的异常情况: java.lang.IndexOutOfBoundsException: readerIndex(39) + length(32) exceeds writerIndex(64): UnpooledUnsafeDirectByteBuf(ridx: 39, widx: 64, cap: 2048) at io.netty.buffer.AbstractByteBuf.checkReadableBytes(

具有多个后端服务器的Netty代理

我正在尝试使用netty v4.0.30编写代理服务器。我已经阅读了版本()中包含的代理示例。但是我的要求有点不同 在我的例子中,netty实例后面可能有多个服务器,所以我不能直接在ChannelActive方法中创建客户机引导。我的客户端实际上向我的netty服务器发送了两个请求(都是TCP):- 请求1:-在端口X连接到后端服务器A。此时,我应该能够打开到后端服务器的连接,并将成功回复为对客户端的回复 Request2:-客户机在同一套接字上写入的实际数据,netty将在该套接字上转发到后端

如何知道Bytebuf是从Netty4的哪个频道读取的?

调用channelRead时,我需要知道数据是从哪个通道读取的,我有几个子通道 在Netty3中,我们可以在调用channelConnected时将一个对象附加到通道或ChannelHandlerContext,然后从Attachments中告诉通道有更好的方法吗 但是在Netty4中,我找不到这样的方法。您可以通过 channel.attr(key).set(...) 您可以使用channel.hashCode;并从channelGroup对象恢复通道

Netty 通道关闭后如何清理包含资源的用户事件

我让一些线程将用户事件消息对象(其中包含一个ByteBuf)发送到通道,然后这些消息将在UserEventTrigger()处理程序方法中处理,该处理程序执行一些逻辑并最终写入通道,以便netty自动释放事件消息对象中包含的ByteBuf。但我发现,如果通道关闭,userEventTriggered()将不再被调用,因此ByteBuf会在内部用户事件消息队列中泄漏 目前,我使用ConcurrentLinkedQueue来存储挂起的用户事件消息对象。如果我想将消息发送到通道,我将消息放入队列,并通

它必须是Netty服务器的客户端,使用Netty框架编写吗?

我需要问,如果我已经使用Netty实现了我的TCP服务器,是否必须使用Netty对我的客户端进行编程,以获得相同的通道处理,或者,任何使用纯Java NIO编写的TCP客户机,如果没有netty,是否可以与任何netty服务器一起工作,而不会出现流处理和编码方面的任何问题 附加部分: 我的服务器在服务器编码器、解码器和登录解码器中有一个可定制的逻辑,我是否也应该在客户端解码器和编码器中复制相同的逻辑 等待你宝贵的答复 非常感谢不,不必了。Netty是一个服务器,您可以用您选择的任何语言或框架编写

Netty体系结构-关于NioWorker循环的问题

我正在研究niowerner.run()方法,并试图了解它是如何工作的。 以下是代码的简化版本: for(;;) { try { SelectorUtil.select(selector); if (wakenUp.get()) { selector.wakeup(); } cancelledKeys = 0; processRegisterTaskQ

Netty 不受控制的客户端(websocketx)内存使用过多

当向一个简单的Netty WebSocket echo服务器实现(示例包中发现的实现的稍加修改的版本)发送数量不受控制的TextWebSocketFrames时,无需等待将来的客户端sync(),服务器上的堆内存使用量呈指数级增长,直到最终耗尽内存 Testcase:客户端不会等到实际字节被写入,也不会等到服务器在写入下一个文本帧之前将文本“回显”到客户端 for (int i = 0; i < 10000000; i++) { ch.write(new TextWebSocket

Netty 使用多少遗嘱执行人?

netty代理示例为服务器和客户端nio套接字工厂的bossExecutor和workerExecutor使用单个Executors.newCachedThreadPool。 这是有原因的吗?重述:boss线程用于接受连接,而工作线程则实际处理来自通道的传入/传出缓冲区 Boss线程通常不是很忙。此外,netty每个端口只需要一个线程,而不是整个池。但您可能会决定,例如,将一个线程池与一个线程连接到服务器10个端口。所有端口将在同一个boss线程上共享和竞争 回到你的问题:老板线程和工人线程使用

netty是否保证数据包的顺序

我需要知道Netty的异步模型是否保证数据包顺序(在高于第4层的级别上) 例如,在下面的代码中 // Assume dos is a DataOutputStream connected to a socket dos.writeBytes(new byte[] { 0x0, 0x1, 0x2, 0x1, 0x0 }); Thread.sleep(100); dos.writeBytes(new byte[] { 0x4, 0x1, 0x5, 0x3 }); 是否可以保证第一组字节将在第二组字

通过Netty动态发送自定义对象

我在Netty中创建了一个PoC来发送和接收java对象。我正在发送clientHandler初始化时创建的对象。如何发送在运行时创建的对象,或者如何编写将对象发送到Netty服务器的发送方法 我刚刚复制了我的客户机处理程序代码。在这里,我在构造函数中创建了player对象。如果我在创建clientHandler对象之后创建了player对象,我如何发送此对象 公共类ObjectEchoClientHandler扩展了ChannelInboundHandlerAdapter{ private P

Netty 当响应不是最后一个块时,如何编写响应

我正在运行nettyhttp上传示例,并且有一个额外的要求,即在上传文件之前必须进行身份验证;我知道要上传大文件,我们使用多部分模式上传,服务器端会多次读取POST请求 所以我的想法是在请求体中设置token作为第一个参数,在读取块时,我可以首先验证token,如果不匹配,则取消整个请求,并向客户端返回一些状态代码 问题是,我如何才能取消请求并适当地发送状态代码,我已经像下面这样尝试过了,但是当通道关闭时,客户端没有完成发送请求,并且将抛出“连接重置”异常: ChannelFuture futu

Netty 导入示例时Eclipse项目中的ArtifactTransferException

我正在尝试运行一些棘手的示例项目。导入Maven项目后,Eclipse报告以下问题: ArtifactTransferException: Could not transfer artifact io.netty:netty-tcnative:jar:${os.detected.classifier}:1.1.33.Fork2 from/to central (http://repo1.maven.org/maven2): Illegal character in path at index 9

Netty 奈蒂:ChannelHandlerContext.channel().write()和ChannelHandlerContext.write()之间有什么区别?

我是内蒂的新手。当我浏览Netty项目的一些示例时,我发现ChannelHandlerContext.channel().write()和ChannelHandlerContext.write()都可以将响应数据写入客户端。那么它们之间有什么区别呢 谢谢大家! Channel#write和ChannelPipeline#从管道中的尾部处理程序上下文写入写入响应 // DefaultChannelPipeline # write public ChannelFuture write(Object

Netty客户端清理多部分tmp数据

我使用的是VertexHTTP客户端,它使用netty UnderHood。 当发送带有大参数的请求时,tmp文件将在/tmp/:Attr_u[timestamp].[parameterName].att中生成,例如Attr_456456132456431_username.att(例如,80 KB大小) 请求可以正常工作,但文件永远不会被删除。这可以手工完成,但我正在寻找一个合适的解决方案。有没有办法让netty(或vertx)删除这样的tmp文件?netty本身不会创建这样的文件,所以它要么

netty SimpleChannelInboundHandler中自动读取的正确用法

我正在将代码从netty 3.8版迁移到netty 4.1版 我使用netty使用http服务器,下面是http服务器的代码 public class SimpleHTTPServer { public void start() { try { ServerBootstrap b = new ServerBootstrap(); EventLoopGroup bossGroup = new NioEvent

Netty Swift NIO TCP客户端自动重新连接

我在Swift NIO中编写了一个TCP客户机来连接Netty TCP服务器。 我希望tcp客户端可以在需要时自动重新连接 导入基础 导入NIO 类MessageHandler:ChannelInboundHandler{ let notificationMessage=NSNotification.Name(rawValue:“位置”) public typealias InboundIn=ByteBuffer 公共类型Alias OutboundOut=ByteBuffer 私有变量numB

Netty 您将如何扩展频道?

我需要你帮我照顾内蒂。我想知道你会如何扩展通道接口,向其中添加我自己的方法,并让Netty使用它(或对其进行转换) Matt。我想更好的解决方案是将频道“包装”到类中,将类存储在ChannelLocal或ChannelHandlerContext中。然后jsut检索您的实现并使用它。这将允许您在NIO和OIO之间切换,而无需担心实现 我在Niostp中也做了类似的事情: 这也有助于分解代码 要提供自己的频道,您需要破解套接字实现。但我认为你应该尽可能避免 对于netty 4.1.25.Fina

Netty服务器在本地运行时未正确关闭

我在同一个jvm中运行Netty客户端和服务器并试图停止服务器时遇到问题。以下是我的代码来举例说明: @BeforeMethod public void setUp() { serverBootstrap = new ServerBootstrap(new DefaultLocalServerChannelFactory()); serverBootstrap.getPipeline().addLast("my-server-handler", new ServerHandler

netty websocket+;连续周期数据推送

在netty中,定期(比如每n秒)从websocket服务器连续推送数据的最佳方式是什么 编辑: 我看到了这篇帖子:根据答案,虽然睡眠不能很好地扩展,但是如何安排执行者的工作呢 WebSocket客户端连接到Netty服务器,握手并建立WebSocket连接 服务器将客户机的通道注册到某个位置,当有数据要发送时,可以在该位置检索该通道。(我在单例中使用ChannelGroup) 调度作业激发,从某处获取一些数据,然后获取对客户端通道的引用并将数据写入其中 客户端通道的管道中应该有一些编码器,用于

Netty帧解码器实例状态

在我的Netty代码中,我正在编写一个帧解码器来处理LDAP PDU。我有一个代码,它允许我确定PDU是否已完成(状态为PDU\u已解码),或者是否需要更多数据(VALUE\u state\u PENDING)。另外,我还可以检测到一些错误情况 在大多数情况下,我认为一读就能得到整个PDU。但当我需要再次读取以获取更多数据时,我想知道编写代码的最佳方法 现在,在我的decode()中,我正在标记读卡器索引buf.markReaderInded(),读取可用的字节,检查读取的字节是否是有效的PDU

Netty 4.0.0.Beta1 ChannelHandlerContext。可读(布尔)已消失,需要更换

在netty 4.0.0.AlphaX中,有一个ChannelHandlerContext.readable(布尔值)方法来暂停传入流量。4.0.0.Beta1的新文档仍然说: 在4.0中,每个ChannelHandler在其ChannelHandlerContext中都有自己的称为“readable”的布尔标志。该标志指示处理程序是否希望Netty读取入站流量 问题是:可读(布尔)方法不存在了,现在我只能找到ChannelHandlerContext.fireChannelReadSuspen

在netty上运行discard服务器

我从下载了netty,并将其解压缩/解压 现在,我想运行Discard Server,这是大多数netty教程中的第一个示例 如果我取消注册netty-example-4.0.0.CR2.jar,我可以看到io/netty/example/discard/DiscardServer.class,我知道这也有main方法 我的问题是:如何运行discard server 我试过了 java -jar netty-common-4.0.0.CR2.jar io.netty.example.disca

如何设置netty 4线程名称?

默认线程名为nioEventLoopGroup-x-x,如何自定义它?它似乎可以在netty 3中使用ThreadRenamingRunnable。但是它在netty4中被删除。只需在NioEventLoopGroup中注入您自己的ThreadFactory,或者使用netty的DefaultThreadFactory,并在注入之前进行相应配置。您需要向EventLoopGroup的构造函数提供自定义java.util.concurrent.ThreadFactory

Netty 在什么情况下,管道将删除其所有元素?

我正在对一个Netty应用程序进行负载测试 该应用程序大量使用以下内容。我以这种方式提交的任务在提交时保留了对ChannelHandlerContext的引用 在观察到应用程序中的奇怪行为后,我记录了其中一个任务中ChannelHandlerContext.pipeline.toMap的输出,因为它是由EventExecutor在定义为事件循环的情况下执行的 令我惊讶的是,如此记录的管道是空的 我使用更传统的channelRead方法记录管道,不用说它不是空的 我的应用程序中没有任何逻辑可以从C

Netty 使用localstack Kinesis运行KCL使用者时出错

同步运动碎片和租约时捕获异常 原因:io.netty.handler.codec.http2.Http2Exception:第一个接收到的帧不是设置。前5个字节的十六进制转储:3c21444f43有许多环境变量需要设置和更正框架选择(例如KCL版本),以使其与localstack一起工作。您需要发布更多关于您的设置和如何运行它的信息,例如docker compose file。作为第一步,请确保已启用localstack日志记录并发布日志记录错误trace@NigelSavage通过使用此库的较

将netty与Apache Camel一起使用时出现死锁

我有一个严重的问题。我的情况是,我需要向netty发送多条消息,这些消息都是由camel在同一个位置生成的,然后得到对每条消息的响应 代码是这样的: from("direct:status") .split().method("splitMessage", "split").to("direct:device") from("direct:device") .to("netty:tcp://4533sync=true&decoders=#myDecoders&encode

Netty-简单线程交错与否

我有一个关于可能的线程交错的问题,但我可能在这里错了。我称之为代码片段 从 handleUpstream(ChannelHandlerContext ctx,ChannelEvent事件) private AtomicInteger metrics=new AtomicInteger(); if(metrics.getAndSet(metrics.get()+1)

用于在Netty中处理固定大小邮件的管道设置

在我当前的场景中,我有一个现有的非netty客户端,它正在向我现有的非netty服务器发送一个固定大小的消息(32*1024字节)。我正在将我的服务器更改为使用Netty,我不清楚在我的业务逻辑处理程序之前需要添加到管道中的处理程序。如果我打算使用SSL,那么我将首先在管道中添加SSL处理程序,最后添加业务逻辑处理程序。那么中间需要我做些什么呢?我是否需要设置大小的帧解码器(如果存在)?消息没有任何字符分隔,因此我认为不需要使用DelimiterBasedFrameDecoder。我也不需要使用

每个通道的Netty IdleStateHandler

嗨,当IdleStateHandler添加到管道中时,我遇到了一个问题。 当我使用 m_channel.pipeline().addFirst("idleStateHandler", new IdleStateHandler(0, 0, 30)); 我说,如果在30秒内没有任何活动(读或写),每个频道都会触发IDLState事件。但此设置适用于定义IdleStateHandler的管道处理的每个通道。 问题是如何为每个通道设置不同的空闲时间?我不理解这个问题。。。每个ChannelPipeli

Netty EventExecutor组中的异常处理

我需要创建线程池来处理对数据库的请求(通常很慢)。我试图理解中的示例,但我不理解异常处理是如何执行的。Callable抛出异常时会发生什么情况 我查看了DefaultEventExecutor和DefaultEventExecutorGroup的代码。 正如我从代码中了解到的,当抛出runable异常时,池中的一个线程将被关闭 我需要对抛出的任何异常进行特殊处理,在这种情况下没有线程关闭。当指定的Callable抛出异常时(即Callable失败时),您添加到EventExecutor.subm

Netty 添加和删除写入Idlestatehandler

在我基于Netty的Http服务器中,我添加了 @Override protected void initChannel(Channel channel) throws Exception { ChannelPipeline pipeline = channel.pipeline(); pipeline.addLast("KeepAlive_Handler", new IdleStateHandler(readTimeout, 0, 0)); pipeline.addLa

Netty线程是否在继续之前处理连接的持续时间?

在我们的管道中,当我们记录日志时,我们需要将数据放入当前线程的MDC中,以便我们的日志解析服务正确地获取日志 我的印象是Netty会将一个连接/通道固定到一个线程,但线程用于多个连接 我的问题是,在一个连接被固定到另一个连接之前,在Netty中完成一个连接的线程工作,或者它们被固定到多个连接并随机从连接的处理程序中跳过 交叉处理时间线示例: Connection1.Handler1.onRead() Connection2.Handler2.onWrite() Connection1.Handl

向netty服务器发出请求时,未调用ChannelRead方法

我正在实现一个netty服务器,它接受http请求并执行一些业务逻辑 基本上,我接受localhost/hello上的GET请求,sysouturi是hello 运行服务器时,在CustomRequestHandler#channelRead0方法中看不到任何系统输出。 我一直打开调试器,我看到channelRead0方法没有被调用。 我想不出是什么问题 我使用的是Netty 4.1.30.Final版本 public class HttpServer { public static

为什么netty 4.1中不推荐UDT传输?

我正在寻找在Java中实现基于UDP的数据传输。我很高兴找到netty,因为它提供UDT运输 但在第二次查看时,我发现io.netty.channel.udt下的所有类都不推荐使用 这是什么原因? 基于netty/udt开始开发有意义吗?还是有更好的方法? 在netty网站上,查看“参与”菜单 去GitHub 搜索一个不推荐使用的文件,例如nioudtaceptorchannel.java 选择“责备” 查找具有@deprecated属性的行 看看评论 将传输udt标记为已弃用,因为不再维护条

Netty 客户端持久套接字

有人能告诉我需要做什么来重用netty中客户端创建的套接字连接吗?如果我在netty的客户端创建一个通道,多个并发线程是否可以在不同步的情况下使用同一通道?在netty 3.2中,处理这种情况的正确方法是什么 -TK是,同一通道可由不同线程使用,因为所有方法都是线程安全的。是,同一通道可由不同线程使用,因为所有方法都是线程安全的。从不同线程调用Channel.write()没有问题。 读取是通过在自定义处理程序中处理事件来完成的,因此不存在多线程问题。当messageReceived事件被触发时

Netty:如何处理从ChunkedFile接收到的块

我是netty的新手,正在尝试将chunkedfile从服务器传输到客户端。发送块很好。问题在于如何处理接收到的块并将其写入文件。我尝试的两种方法都给了我一个直接的缓冲区错误 任何帮助都将不胜感激 谢谢 @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception { System.out.println(in.to

上一页   1   2   3   4    5   6  ... 下一页 最后一页 共 23 页