2

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

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

  1. 例如,如果我获得第一个与 1024 字节数据消息的连接,那么到目前为止一切都很好,而不是我使用 HexDumpProxyInboundHandler 创建转发地址的套接字

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

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

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

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

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

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

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

先感谢您!

4

2 回答 2

3

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

于 2012-06-23T18:37:51.423 回答
1

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

于 2012-06-20T01:33:59.740 回答