【问题标题】:NETTY ISSUE Client 1024 byte messageNETTY ISSUE 客户端 1024 字节消息
【发布时间】:2012-06-21 11:40:14
【问题描述】:

我想直接报告这个错误,但是从主页netty.io上还没有找到任何可能

我在向频道发送数据时发现了一个错误。它并不总是发生,在 10-20% 的情况下,但它确实发生了。 接下来,

    1234563
  1. 这一切都很好,除了一件事,我在转发地址上创建了一个带有流量日志的侦听器,在那里我得到了 Netty 发送的消息。我希望它上面有 1024 字节的数据,但它并不总是发生,也不是 100% 的情况。 有时候……

  2. 有时噩梦从这里开始, 如果我在 1024 字节消息后在同一频道上收到下一条消息,则数据将以下列可能的形式写入:

3.1 第一条消息和第二条消息被合并,我在端口侦听器上获得的数据是正确的,1024 + 72(例如)和正确的字节顺序(但在合并的形式中,什么已经不正确对我来说)

3.2 或者第一条消息和第二条消息也被合并,但有一点区别,不同的顺序,72(例如)+ 1024字节,即使数据被服务器套接字正确接收,并且顺序正确..发送顺序也不正确。

3.3 或最后 1024 的第一条消息按原样发送,第二条消息也按原样发送,所以这里一切都很好,这是正确和预期的行为..

此外,错误并不总是发生,但它总是会发生,并且总是发生,如果发生,只有当第一次连接时第一条消息的长度为 1024 字节并且第二条消息在第一条消息之后立即发送而没有接收到数据时才会发生之前。

现在社区的问题是,是否可以在 Netty 中关闭这种奇怪的缓冲行为?这样服务器套接字上收到的所有消息都以完全相同的方式发送到客户端套接字通道,而无需合并数据。

提前谢谢你!

【问题讨论】:

    标签: java netty


    【解决方案1】:

    这种“奇怪”的行为与 netty 无关。一次传输多少字节取决于网络层,所以它真的希望看到这一点。如果您需要全部 1024 个字节,则需要缓冲它们直到收到足够的数据。

    【讨论】:

      【解决方案2】:

      好的,经过漫长的一夜,我终于解决了我的问题。看起来,Netty 项目在这种情况下仍然存在问题,并且会接受传入的消息以错误的顺序发送。 所以,我所做的,我用传入的消息填充缓冲区,直到客户端的远程连接被打开,所以我发送的不是完整的正确缓冲区,而是让 Netty 完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-05
        • 2015-04-07
        • 2021-06-07
        • 1970-01-01
        • 2017-10-26
        • 2018-07-10
        • 2017-03-08
        • 1970-01-01
        相关资源
        最近更新 更多