to GJA106:
我在发送方这样发送
int len = 4096;
byte []buffer = new byte[len];
int blockcount = filesize / len;//完整的数据块 数目
int lastblock = filesize % len;//最后一块的大小,可能是0
for(int i=0;i<blocksize;i++) {
读文件到buffer;
将buffer发送到数据连接;
}
if(lastblock != 0) {//发送最后一块
buffer = new byte[lastblock];
读文件到lastblock;
发送lastblock;
}
发送小文件完全正确,我尝试用了好几个大小为3k-50k的文件,使用16进制编辑器比较下载之后的文件,发现没有问题。就是大文件不行啊
我在发送方这样发送
int len = 4096;
byte []buffer = new byte[len];
int blockcount = filesize / len;//完整的数据块 数目
int lastblock = filesize % len;//最后一块的大小,可能是0
for(int i=0;i<blocksize;i++) {
读文件到buffer;
将buffer发送到数据连接;
}
if(lastblock != 0) {//发送最后一块
buffer = new byte[lastblock];
读文件到lastblock;
发送lastblock;
}
发送小文件完全正确,我尝试用了好几个大小为3k-50k的文件,使用16进制编辑器比较下载之后的文件,发现没有问题。就是大文件不行啊
解决方案 »
- javac在编译时,都做了什么
- 用hibernate删除数据再查询数据时,发现数据库中已经删除的数据却能在JSP中显示出来,怪哉!
- Mina服务器端研发群,以积极讨论问题为主.
- 关于ibatis的问题
- 关于博客系统的日志展现
- 请教JNDI建立初始化上下文时Context ctx = new InitialContext(env); 是怎么回事?
- Validator启用自定义规则客户端验证的问题以及ValidateWhen的资料
- 在线等,求救~~~~~~(急)
- 请教JDBC连接Access问题。
- 一个jboss naming问题求救!
- struts图书下载!!!
- 在Resin下怎么实现像在tomcat下发布一个web工程啊(在server.xml文件里修改<context path=""/>)?在Resin里怎么修改Resin.conf文件呢?
读文件到buffer;
将buffer发送到数据连接;
}
"将buffer发送到数据连接;",发送有同步控制没有?
发送发先把文件大小发过去,接受接受无误啊。
之后接下来的传输每一块都要发同步控制吗?
如果需要,怎么样处理好呢?
我收发数据的时候是用DataInputStream 和 DataOutputStream的
之后接下来的传输每一块都要发同步控制吗?--可能有问题。比如有100次循环,在循环中取数据到把数据传给发送数据类这个过程很快,起码比socket发送数据快不少;
所以你在接收待发送数据方法中如果不同步,当前发送过来的数据可能会与前一次数据产生混杂--数据不一致、少数据。