0 0

JAVA socket 文件传输 问题请教!30

我写的SOCKET 文件传输带MD5校验,客户端总是多写16位的MD5
服务端代码:(在WRITE完以后,还需要WRITE16位的MD5值)
while (len <= 8096 && fis.available() > 0) {
byte[] src = new byte[8096];
len = fis.read(src);
dos.write(src, 0, len);
dos.flush();
}
dos.write(fth.getMd5Value());
dos.flush();

客户端代码:
while (rFilelen > 0) {
byte[] recvData = new byte[8096];
int len = dis.read(recvData);
// 进行SHA1校验
digest.update(recvData, 0, len);
fos.write(recvData, 0, len);
rFilelen = rFilelen - len;
System.out.println(rFilelen);
}
byte[] md5Value=new byte[16];
dis.readFully(md5Value);
2013年12月10日 20:05

1个答案 按时间排序 按投票排序

0 0

改进一下你的方法;
//写方法
int len;
byte[] buffer = new byte[2048];
while((len = fis.read(buffer)) != -1){ //说明还有内容
    dos.write(buffer, 0, len);
    dos.flush();
}

//读方法
int len;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer  = new byte[2048];
while((len = dis.read(buffer)) != -1){ //说明还有内容
    baos.write(buffer, 0, len);
    baos.flush();
}
byte[] body = baos.toByteArray();
baos.close();
digest.update(body, 0, body.length);


中间缺少的代码请自行补上。。。。
希望能帮到你。

2013年12月11日 13:59

相关推荐

Global site tag (gtag.js) - Google Analytics