环境:Win 7 / JRE 1.6.0_45 / Netty 4.0.0_CR7
我的客户端应用程序正在使用 ChunkedByteInput 的实现将文件流式传输到 TCP 服务器。一个 10 MB 大小的典型文件以每个 20 kB 的块的形式传输,从而产生大约 500 个块。
TCP 连接是预先设置好的(在连接建立后,上传按钮等 GUI 元素会启用),之后也不会关闭。相反,表示单个文件的 ChunkedByteInput 实现会预先添加一个包含文件名和大小的标题块,并附加一个带有文件的 MD5 哈希的页脚块。
通常,一切都很好。但在随机情况下(10-20%),传输在某个任意块之后停止(不再调用 ChunkedInput.readChunk())。作为一种解决方法,我只是在检测到一段时间(例如 5 秒)不活动后再次将不完整的输入写入通道,然后传输恢复并正常完成。但这显然是一个肮脏的黑客。
知道是什么导致了这种行为吗?
编辑:这里是 Github 上相关问题的链接: https ://github.com/netty/netty/issues/1506