1
我目前正在做一個學習netty的項目,我正在嘗試使用ChunkedFileHandler將文件從服務器發送到客戶端。因爲它是在控制檯中記錄 服務器端代碼中的文件被髮送閱讀Chunked文件Netty Java
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
System.out.println("In channel and the context is " + ctx);
ctx.writeAndFlush(new ChunkedFile(new File("Test//ige.dat")));
}
該文件被髮送。 但現在回到客戶端,我的記錄器說我正在接收1024字節的文件,這是絕對好的。
public class ChunkedFileClientHandler extends SimpleChannelInboundHandler<ChunkedFile> {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg)
throws Exception {
System.out.println("Read a chunk of file");
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
System.out.println("Chunk read completed!");
}
該文件服務器發送的是239 mb的。每次接收到一個數據塊時,首先啓動channelRead並觸發channelReadComplete。
現在我的問題是我將如何組裝這些塊,並再次形成文件的名稱和其他所有信息完好無損。我查看了netty網站,但他們沒有讀取分塊文件的客戶端代碼。
謝謝
好吧,我明白了,但是您對如何將文件塊組裝成可讀文件有任何想法嗎? – Sneh 2015-04-04 18:05:14
查看更新的答案。 – yole 2015-04-04 18:25:53
感謝您的回答。我現在可以在客戶端重新創建文件。只有最後一件我想知道的是,有沒有關於如何創建自定義協議的任何教程? Netty教程並不完全清楚,我不知道如何使用協議傳輸文件名。 – Sneh 2015-04-04 18:52:34