Я отправляю MultiPart
на мой удаленный сервер, чтобы сохранить его в файловой системе. Для этого я использую протокол Java TCP/IP
. Для избежания пропускной способности сети и буферной памяти ввода/вывода TCP, я отправляю данные в сжатом формате GZIP
. Но я не могу распаковать данные, полученные от клиента. Я получил Unexpected end of ZLIB input stream
Исключение. В связи с этим сервер получает данные в chunks
.TCP Socket отправлять данные в формате сжатия GZIP
Java Code
Client
OutputStream out = new GZIPOutputStream(sock.getOutputStream());
byte[] dataToSend = FileUtil.readFile(new File("/Users/bharathi/Downloads/programming_in_go.pdf"));
out.write(dataToSend);
Сервер
out = new FileOutputStream("/Users/bharathi/Documents/request_trace.log");
InputStream in = new GZIPInputStream(clntSocket.getInputStream());
int totalBytesRead = 0;
int bytesRead;
byte[] buffer = new byte[BUFFER_SIZE];
while ((bytesRead = in.read(buffer)) != -1)
{
out.write(buffer , 0 , bytesRead);
totalBytesRead += bytesRead;
}
Есть ли решение для передачи данных в сжатом формате GZIP в сокет?
Возможно, вы захотите изменить свой протокол, чтобы сначала отправить размер для чтения. –