Netty中封装了对Http chunked协议的支持,使用方式如下:
1 write一个response,且设置chunked参数,告知客户端将返回chunked类型数据;
2 开始写chunk数据;
3 按照chunk协议标准返回chunk数据结束标记;
4 关闭channel连接。
具体代码如下:
HttpRequest req = (HttpRequest) reqObj;
HttpResponse resp = new DefaultHttpResponse(HttpVersion.HTTP_1_1,
HttpResponseStatus.OK);
resp.setChunked(true);
resp.setHeader(HttpHeaders.Names.TRANSFER_ENCODING, HttpHeaders.Values.CHUNKED);
ChannelFuture f = ctx.getChannel().write(resp);
String str = "my test chunked data!";
HttpChunk chunk = new DefaultHttpChunk(ChannelBuffers.wrappedBuffer(str.toString().getBytes(CharsetUtil.UTF_8)));
f = ctx.getChannel().write(chunk);
HttpChunk chunk = new DefaultHttpChunk(ChannelBuffers.EMPTY_BUFFER);
f = ctx.getChannel().write(chunk);
f.addListener(ChannelFutureListener.CLOSE);
ps:chunked的数据大小可根据实际情况自己定义。
分享到:
相关推荐
netty案例,netty4.1中级拓展篇十一《Netty基于ChunkedStream数据流切块传输》源码 ...
- 使用 Telnet 或 Netcat 工具模拟客户端连接,验证服务器端是否能正确接收文件。 - 对传输的大文件进行完整性校验,如计算 MD5 或 SHA 哈希值,确保文件传输无误。 7. **安全考虑** - **身份验证**:为了防止...
此外,还可以使用HttpObjectAggregator来聚合多个HTTPContent片段到单个FullHttpRequest或FullHttpResponse中,以便处理HTTP的Chunked传输。 在实际应用中,我们可能会创建两个独立的ChannelPipeline,一个用于TCP...
3. **Chunked Write**: 当需要上传大文件时,Netty提供了`ChunkedWriteHandler`,它允许我们分块发送大文件,而不是一次性加载到内存中。这样可以有效地防止内存溢出,并提高系统的稳定性。 4. **FileRegion**: ...
1. **Chunked Write Handling**:Netty支持大文件的分块传输,避免一次性加载整个文件到内存。它将大文件分割成小块(chunk),然后逐块发送,确保资源的有效利用。 2. **FileRegion**:Netty中的接口,用于表示文件...
从给定的代码片段来看,主要涉及的是HTTP Chunked Transfer Encoding机制在Netty框架中的实现。下面将详细解析HTTP Chunked编码以及其在Netty框架中的应用。 ### HTTP Chunked Transfer Encoding HTTP Chunked ...
在本文中,我们将深入探讨 Netty 应用于 HTTP 协议处理的相关知识点,以及如何使用 Maven 构建和部署 Netty 容器到生产环境。 一、Netty 框架概述 Netty 是由 JBoss 提供的一个开源框架,它提供了一种灵活的方式来...