了解Java中的ICAP服务器文件传输问题

时间:2018-10-16 19:41:56

标签: java network-programming icap

我正在尝试使Java ICAP服务器与充当ICAP客户端的蓝色外套设备接口。我正在使用的ICAP服务器在这里:icap。基本上,我一直在使工作正常,现在我坚持为什么在服务器端我没有收到文件。以下几行代码显示了我最近所在的位置。显然,大多数代码已被省略。

IcapRequest request = (IcapRequest)e.getMessage();
ChannelBuffer buffer = null;
buffer = request.getHttpRequest().getContent();
if(buffer != null) {
    System.out.println("Buffer = " + buffer.toString(Charset.defaultCharset()));
}
try {    
    FileOutputStream fout= new FileOutputStream(testfile);
    while (request.getHttpResponse().getContent().readable()) {
        byte[] bb = new byte[request.getHttpResponse().getContent().readableBytes()];
        request.getHttpResponse().getContent().readBytes(bb);
        fout.write(bb);
}

基本上,我看到使用wireshark并在服务器上的打印语句上得到了文件名,html请求等。但是当它是一个大文件时,我并没有得到所有的内容。如果它是.txt小文件,则可以获取内容并将txt文件和所有内容保存到服务器端磁盘。如果它是任何大小约为10K或更大的.docx文件,则似乎只有一个ICAP客户端数据包具有使用PSH方法的内容,而没有其他内容,因此如果我尝试将文件保存到磁盘上的服务器中我没有获取所有内容,因此文件基本上已损坏。因此,在这一点上,我不确定为什么我不能让ICAP服务器保存从蓝色外套设备发送的.docx文件,因为我更倾向于在服务器端解决问题。任何建议将不胜感激。

0 个答案:

没有答案