java socket 二次发送_发过2次帖子,都没有了,再发。JAVA中SOCKET通信中的数据压缩问题...
通信中要发大批量数据,发送前想进行压缩,发送完一段数据后要进行验证,然后才能继续发。我使用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通信中的数据压缩问题...相关推荐
- java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园
最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...
- java 实现最优二叉树_哈夫曼树(最优二叉树)及其Java实现
一.定义 一些定义: 节点之间的路径长度:在树中从一个结点到另一个结点所经历的分支,构成了这两个结点间的路径上的经过的分支数称为它的路径长度 树的路径长度:从树的根节点到树中每一结点的路径长度之和.在 ...
- java广播数据包发送_在Java中广播UDP数据包的正确和有效方法是什么?
我需要在每个网络接口上广播UDP数据包.起初,我尝试播放到255.255.255.255,没有结果,后来我发现这个"已被弃用了大约20年".因此,我尝试在每个网络接口上进行迭代,以 ...
- java画二维坐标_在图形界面中绘制二维的坐标系统
在图形界面中绘制二维的坐标系统,其中x轴位于绘图区正中,y轴位于绘图区的最左边.实现以下基本功能: (1)设计界面接受用户输入的实验数据,同时绘制数据点,每个数据点用一个小圆号表示.最后,用直线或曲线 ...
- java byte 二维数组_[编程入门]二维数组的转置-题解(Java代码)
解题思路: 注意事项: 参考代码:import java.util.Scanner; public class Main { public static void main(String[] args ...
- java 微信二次分享_微信二次分享
这几天做一个微信公众号的需求,有个分享功能.发现分享从公众号分享到微信是正常的,可以看到缩略图.名称.描述,但是直接转发该分享或者点开该分享再次通过微信分享时,就只出现了链接地址,也没有缩略图.如下图 ...
- java json 二维数组_安卓中使用Gjson解析二维数组
String str = "{\"hot\":[{\"id\":\"1\",\"name\":\"张 ...
- java rfc 二围数据_如何使用Java解析RFC 3339数据时间?
所以,原则上这将使用不同的 SimpleDateFormat模式. 日期:yyyy >日期月份:MM > date-mday:dd 时间:HH time -minute:mm time-s ...
- java 字符数组与字符串_用于字符串和数组的5种简单有效的Java技术
java 字符数组与字符串 Java通常会排在前五种最流行的编程语言中,因此可以理解. 它是一种通用语言,非常容易学习,因为它是一种高级语言,并且可以满足许多用例. 由于这些原因,Java是一门很棒的 ...
最新文章
- oracle sqlplus @@用法
- vue 表单验证按钮事件交由父组件触发
- 不说技术~我需要调整自己,最近整整两天状态不是很好
- vue 项目如何引入微信sdk,使用微信接口
- C#类型的强制转换及隐式转换
- Android10一直获取IP地址,Android 获取IP地址的实现方法
- 解决Linux里面未启用网卡的问题
- python post 上传文件_python接口自动化7-post文件上传
- atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較...
- Mybatis原理解析(一)解析全局xml配置文件生成SqlSessionFactory过程
- 《算法精解:C语言描述》勘误
- 中国多端柔性直流输电行业发展分析及投资可行性调研报告2022-2028年版
- 如何让 ABAP 报表在后台作业的模式下运行
- matlab自定义colormap保存不,matlab自定义colormap
- Oracle中的sql语句
- 关于android分支无法下载的问题,revision froyo in manifests not found
- python 常用的几种定位方式
- vue使用FullCalendar插件实现会议预约功能,个性化实现周视图
- sysconfig看不了怎么更新_sysconfig老版本下载-sysconfig稳定版(能看的版本)_5577安卓网...
- STM32 输入捕获测量脉冲周期/频率
热门文章
- JavaSE各阶段练习题----Map
- 面试必会系列 - 1.1 Java SE 基础
- Java程序员需要掌握的计算机底层知识(三):进程、线程、纤程、中断
- 【Java语法】比较两个字符串是否相等
- 5W字高质量java并发系列详解教程(上)-附PDF下载
- JDK12的新特性:teeing collectors
- c 用mysql导出xls文件怎么打开_mysql——xls表格的导出和导入(重点)
- androidtabhost缓存_Android学习笔记(一):TabHost存放多个Activity
- maven的日志在哪里看_日志管理领域研究现状(2)
- redis的五种数据结构