当前位置: 首页 > 知识库问答 >
问题:

Netty无法在通道中发送第二个请求

邹高峻
2023-03-14

我试图在netty中模拟http握手,但客户端无法发送第二个请求。这就是流程

Client -> request1 -> Server
Client <- response <- server
Client -> request2 -> Server (cannot see data is sent)
Client <- response <- server

这是代码https://github.com/Tonghua-Li/Netty-Handshake-Test/tree/master/src/main/java

服务器和客户端日志位于git repo的根文件夹中https://github.com/Tonghua-Li/Netty-Handshake-Test/blob/master/client.log

从日志中,准备请求2并将其刷新到端口80(服务器)。但我在客户端日志中没有看到请求1中的十六进制块

sending request 2
Sep 24, 2019 6:02:40 PM io.netty.handler.logging.LoggingHandler flush
INFO: [id: 0xd6797f27, L:/127.0.0.1:60893 - R:/127.0.0.1:80] FLUSH

谢谢

共有1个答案

冀阳文
2023-03-14

您需要创建FullHttpRequest实例,或者您需要在发送下一个HttpRequest之前使用LastHttpRequest“终止”您的HttpRequest

如果将一个通道未来监听器连接到由writeAndFlush(…)返回的通道未来监听器,您将看到通道未来失败,因为“消息序列”不是预期的。

 类似资料:
  • 我正在尝试让客户端/服务器程序通过ssl交换http消息。首先,我创建了使用DefaultHttpRequest成功交换http请求的客户端和服务器程序。发送请求的代码如下所示: 客户端管道工厂包含以下内容: 服务器管道工厂包含以下内容: .... 到目前为止一切顺利。客户端发送请求,服务器接收并解码请求。使用正确的数据调用我的处理程序上的messageReceived方法。 为了启用 SSL,我

  • 以下是我的情况: < li >客户端向Netty服务器发送POST请求。 < li>Netty处理POST请求,如果服务器确定需要发送响应,它会将响应发送回客户端。否则,服务器必须向另一个endpoint发送POST请求,获取响应并将该响应发送回客户端。 到目前为止,我已经处理了传入的POST请求。要发送传出的POST请求,这是我在Handler中所做的。 这显然是错误的,因为我正在处理程序中启动

  • 问题内容: 首先,让我解释一下上下文: 我必须创建一个客户端,该客户端将发送许多HTTP请求以下载图像。这些请求必须是异步的,因为一旦完成图像,它将被添加到队列中,然后打印到屏幕上。由于图像可能很大且响应分块,因此我的处理程序必须将其聚合到缓冲区中。 因此,我遵循Netty示例代码(HTTP勺示例)。 目前,我有三个静态映射,用于为每个通道存储通道ID和缓冲区/块布尔值/我的最终对象。 在那之后,

  • 我想在一个活动中打开不同的文章,使用我通过通知发送的不同帖子id。我可以点击通知打开一个帖子,但打开同一个活动后,我无法打开或处理第二个通知。 注意:我试过使用可以轻松打开所有通知,但当按下HOME(主页)按钮并从抽屉重新打开应用程序时,它会打开第一个通知,而不是最后一个打开的通知。 XML很简单`

  • 我在尝试发送超文本传输协议/2请求时遇到了使用gatling工具的问题。 我在协议设置中启用了超文本传输协议/2设置,甚至添加了映射以确保客户端将使用http2与服务器通信,但仍然使用超文本传输协议/1.1发送请求。 在控制台输出中,您将看到服务器可以使用http2进行通信,但由于某些原因,请求仅使用http1.1发送。 所有标题都是根据浏览器中的标题编写的。 有人能帮我解决这个问题吗? 在控制台

  • 嗨,当IdleStateHandler被添加到管道时,我遇到了一个问题。当我使用 我建议每个通道在30秒内没有任何活动(读或写)时触发IdleState事件。但此设置适用于定义IdleStateHandler的管道所处理的每个通道。问题是我如何为每个频道设置不同的空闲时间?