我必须在java中创建一个日志服务器,并且一个任务是发送压缩的数据。现在我以纯文本逐行发送它,但我必须压缩它。 服务器句柄“HTTP like”请求。例如,我可以获得发送“GET xxx.log”的日志。这将建立到服务器的TCP连接,服务器响应头和日志,并关闭连接。客户端逐行读取并分析每个LOG条目。 我尝试了一些没有成功的方法。 我的主要问题是我不知道每行的结束位置(在客户端大小)。 有什么想法?通过套接字发送压缩数据
回答
,将最有意义的事情是这样的
- 客户端发送GET foo.log
- 服务器发送“面积:15042 \ N”
- 服务器发送的压缩档,整个
- 客户端分析大小:头(读取直到换行符),然后知道有多少字节预计
- 然后客户端从服务器读取所有这些字节(在本例中为15042)
- 客户端解压接收到的数据
- 客户端,然后处理
您不妨来看看在HTTP范围头日志(解压缩,你会发现新行)。客户端可以请求一个字节范围,服务器将只返回那些字节。使用GZIP压缩。
在请求部分日志之前,您可以从客户端调用一个操作,该操作将提供带有字节范围的索引。
HTTP头有很多开销,所以你可能会考虑一次发送100行或更多。
最后,看看分块传输编码,这将允许您将数据传输到客户端。
在服务器端使用GZIPOutputStream,在客户端使用GZIPInputStream,并在其周围有一个InputStreamReader和一个BufferedReader。然后只读线条。
我试过了,但是当我尝试使用readline()时,它会抛出以下异常: java.io.EOFException:ZLIB输入流的意外结束 – Pizza 2010-06-16 04:03:07
然后,如果您在新问题中粘贴了重现代码示例,可能会很好。流是一个很好的方式来做到这一点。 – 2010-06-16 07:08:41
- 1. 压缩套接字发送数据
- 2. 通过套接字发送压缩的JPG图像
- 3. 套接字压缩数据的优点
- 4. 通过套接字发送和接收数据python3
- 5. 通过TCP套接字发送和接收数据的问题
- 6. 通过套接字发送和接收数据
- 7. 如何通过套接字发送/接收二进制数据?
- 8. 如何压缩数据以通过电子邮件发送
- 9. 通过套接字发送视频帧
- 10. 通过套接字发送zip文件
- 11. 通过套接字发送对象
- 12. 通过套接字发送对象
- 13. 通过TCP套接字发送文件
- 14. Java通过套接字发送文件
- 15. 通过Java套接字发送文件
- 16. 通过套接字发送文件
- 17. Java - 通过套接字发送证书
- 18. 通过套接字发送BufferedImages
- 19. 通过套接字发送wav文件
- 20. 通过套接字发送inkcanvas笔画
- 21. 通过UDP发送HEX值套接字
- 22. 通过套接字发送大型XML数据
- 23. Perl - 通过套接字发送多个数据
- 24. 如何通过套接字InputStream发送XML数据
- 25. Python迭代并通过套接字发送数据(Logstash/Elasticsearch)
- 26. 通过Android的套接字发送缓冲数据
- 27. 通过套接字从Objective-C发送数据到Java
- 28. 如何通过套接字发送所有数据?
- 29. 如何通过PHP的unix套接字发送数据报?
- 30. 通过TCP套接字发送可变长度数据
这对我不起作用,因为我想尽可能快地处理行(日志文件可以非常大) – Pizza 2010-06-16 04:05:29
然后以块的形式执行,重复步骤3到6的大小字节块 – 2010-06-16 06:39:32