有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过socket发送压缩数据

我必须用java制作一个日志服务器,其中一项任务是发送压缩的数据。现在我用纯文本逐行发送它,但我必须压缩它。 服务器处理“类似HTTP”的请求。例如,我可以通过发送“get xxx.log”来获取日志。这将嵌入到服务器的TCP连接、带有头和日志的服务器响应,并关闭连接。客户端逐行读取并分析每个日志条目。 我尝试了一些方法,但没有成功。 我的主要问题是,我不知道每条线的终点(在客户端大小上)。 知道吗


共 (3) 个答案

  1. # 1 楼答案

    您可以看看HTTP范围标头。客户端可以请求一系列字节,而服务器将只返回这些字节。使用GZIP压缩

    在请求部分日志之前,您可以从客户端调用一个操作,该操作将提供一个带有字节范围的索引

    HTTP报头有很多开销,因此您可以考虑一次或多次发送100行。

    最后,看看分块传输编码,它将允许您将数据流传输到客户端

  2. # 2 楼答案

    在服务器上使用一个GZIPOutputStream,在客户端使用一个GZIPInputStream,周围有一个InputStreamReader和一个BufferedReader。然后读台词

  3. # 3 楼答案

    最有意义的事情是这样的

    1. 客户端发送GET-foo。日志
    2. 服务器发送“大小:15042\n”
    3. 服务器发送整个压缩日志文件
    4. 客户端解析Size:header(读取到换行符),然后知道需要多少字节
    5. 然后,客户端从服务器读取所有这些字节(示例中为15042)
    6. 客户端解压缩接收到的数据
    7. 然后,客户端处理日志(解压缩后,您会发现换行符)