通信中要发大批量数据,发送前想进行压缩,发送完一段数据后要进行验证,然后才能继续发。我使用GZipInputStream和GZipOutputStream进行处理,但发送完一段数据后,调用zipoutput.finish()后,在发数据就出现异常“write beyond end of stream”,但不调用finish数据不能发出去,以下是我的声明代码:

DataInputStream inStream = new DataInputStream(new GZIPInputStream(dataSocket.getInputStream(),10000));

GZipOutputStream zipOut = new GZIPOutputStream(dataSocket.getOutputStream(),10000);

outStream = new DataOutputStream(zipOut);

请各位指教!多谢

|

调用了finish(),后ZIPStream就算设置了结束位

看看下面的传文件的例子,我随手写的,可能编译有问题,但大体是这样用的:

==========Server:

int ret=0;

byte[] tmpdata=new byte[4096];

byte[] data;

FileInputStream in=new FileInputStream("Test.txt");

Socket client=server.accept();

BufferedOutputStream out=new BufferedOutputStream(new GZIPOutputStream(client.getOutputStream()));

do{

ret=in.read(tmpdata);

System.out.println(ret);

if(ret==-1) break;

data=new byte[ret];

System.arraycopy(tmpdata, 0, data, 0, ret);

out.write(data);

out.flush();

}while(true);

in.close();

out.close();

==========Client:

int ret;

byte[] tmpdata=new byte[4096];

byte[] data;

Socket c=new Socket("heifei", 5050);

InputStream in=c.getInputStream();

FileOutputStream f=new FileOutputStream("Test2.gz");

do{

ret=in.read(tmpdata);

if(ret==-1)break;

data=new byte[ret];

System.arraycopy(tmpdata, 0, data, 0, ret);

f.write(data);

f.flush();

}while(true);

f.close();

in.close();

c.close();

java socket 二次发送_发过2次帖子,都没有了,再发。JAVA中SOCKET通信中的数据压缩问题...相关推荐

  1. java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园

    最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...

  2. java 实现最优二叉树_哈夫曼树(最优二叉树)及其Java实现

    一.定义 一些定义: 节点之间的路径长度:在树中从一个结点到另一个结点所经历的分支,构成了这两个结点间的路径上的经过的分支数称为它的路径长度 树的路径长度:从树的根节点到树中每一结点的路径长度之和.在 ...

  3. java广播数据包发送_在Java中广播UDP数据包的正确和有效方法是什么?

    我需要在每个网络接口上广播UDP数据包.起初,我尝试播放到255.255.255.255,没有结果,后来我发现这个"已被弃用了大约20年".因此,我尝试在每个网络接口上进行迭代,以 ...

  4. java画二维坐标_在图形界面中绘制二维的坐标系统

    在图形界面中绘制二维的坐标系统,其中x轴位于绘图区正中,y轴位于绘图区的最左边.实现以下基本功能: (1)设计界面接受用户输入的实验数据,同时绘制数据点,每个数据点用一个小圆号表示.最后,用直线或曲线 ...

  5. java byte 二维数组_[编程入门]二维数组的转置-题解(Java代码)

    解题思路: 注意事项: 参考代码:import java.util.Scanner; public class Main { public static void main(String[] args ...

  6. java 微信二次分享_微信二次分享

    这几天做一个微信公众号的需求,有个分享功能.发现分享从公众号分享到微信是正常的,可以看到缩略图.名称.描述,但是直接转发该分享或者点开该分享再次通过微信分享时,就只出现了链接地址,也没有缩略图.如下图 ...

  7. java json 二维数组_安卓中使用Gjson解析二维数组

    String str = "{\"hot\":[{\"id\":\"1\",\"name\":\"张 ...

  8. java rfc 二围数据_如何使用Java解析RFC 3339数据时间?

    所以,原则上这将使用不同的 SimpleDateFormat模式. 日期:yyyy >日期月份:MM > date-mday:dd 时间:HH time -minute:mm time-s ...

  9. java 字符数组与字符串_用于字符串和数组的5种简单有效的Java技术

    java 字符数组与字符串 Java通常会排在前五种最流行的编程语言中,因此可以理解. 它是一种通用语言,非常容易学习,因为它是一种高级语言,并且可以满足许多用例. 由于这些原因,Java是一门很棒的 ...

最新文章

  1. oracle sqlplus @@用法
  2. vue 表单验证按钮事件交由父组件触发
  3. 不说技术~我需要调整自己,最近整整两天状态不是很好
  4. vue 项目如何引入微信sdk,使用微信接口
  5. C#类型的强制转换及隐式转换
  6. Android10一直获取IP地址,Android 获取IP地址的实现方法
  7. 解决Linux里面未启用网卡的问题
  8. python post 上传文件_python接口自动化7-post文件上传
  9. atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較...
  10. Mybatis原理解析(一)解析全局xml配置文件生成SqlSessionFactory过程
  11. 《算法精解:C语言描述》勘误
  12. 中国多端柔性直流输电行业发展分析及投资可行性调研报告2022-2028年版
  13. 如何让 ABAP 报表在后台作业的模式下运行
  14. matlab自定义colormap保存不,matlab自定义colormap
  15. Oracle中的sql语句
  16. 关于android分支无法下载的问题,revision froyo in manifests not found
  17. python 常用的几种定位方式
  18. vue使用FullCalendar插件实现会议预约功能,个性化实现周视图
  19. sysconfig看不了怎么更新_sysconfig老版本下载-sysconfig稳定版(能看的版本)_5577安卓网...
  20. STM32 输入捕获测量脉冲周期/频率

热门文章

  1. JavaSE各阶段练习题----Map
  2. 面试必会系列 - 1.1 Java SE 基础
  3. Java程序员需要掌握的计算机底层知识(三):进程、线程、纤程、中断
  4. 【Java语法】比较两个字符串是否相等
  5. 5W字高质量java并发系列详解教程(上)-附PDF下载
  6. JDK12的新特性:teeing collectors
  7. c 用mysql导出xls文件怎么打开_mysql——xls表格的导出和导入(重点)
  8. androidtabhost缓存_Android学习笔记(一):TabHost存放多个Activity
  9. maven的日志在哪里看_日志管理领域研究现状(2)
  10. redis的五种数据结构