java的socket传输文件,发送与接收文件的内容不一致

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的socket传输文件,发送与接收文件的内容不一致相关的知识,希望对你有一定的参考价值。

服务端:
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()
FileInputStream fis=new FileInputStream(fileName)
byte[] b = new byte[512];
int len;
NetData netData=new NetData();

while ((len = input.read(b)) != -1)
netData.data=b;
netData.len=len;
oos.writeObject(netData);

客户端:
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()
FileOutputStream fos=new FileOutputStream(fileName);
NetData netData;

while ((netData =(NetData)ois.readObject()) != null)
fos.writeObject(netData.data,0,netData.len);

省略了许多无关代码,能正常传送文件,文件大小也一样,但,文件内容却不相同,不知道是为什么?????
文件是一张图片,传送过去大小是一样的,但打不开,换成其他文件也一样

确认下文件的编码问题。 不行就传一个或俩个字节过去debug一下呗。追问

我也想可能是编码问题,但怎么改呢,文件是一张图片,传送过去大小一致,但打不开,FileInputStream与FileOutputStream好像跟编码处理无关的吧

追答

我这试了一下是可以的,给你参考下吧。  关键代码差不多。你自己再试试吧。

参考技术A 还真简便。。。编码不一样不是重点。。。重点是图片的格式哦, 参考技术B 很可能是编码的问题吧。追问

文件是一张图片,传送过去大小一致,但打不开,如果是编码问题,怎么改呢?服务器与客户端的默认编码确实不一致

以上是关于java的socket传输文件,发送与接收文件的内容不一致的主要内容,如果未能解决你的问题,请参考以下文章

java中怎么用socket 一次传多个文件啊?

请问java消息怎么发送图片文件,又怎么接收呢?

用socket发送接收数据,但每次接收的数据字节长度都大于发送的25个字节?

linux下socket文件传输问题

java 25 - 4 网络编程之 UDP协议传输思路

在windows 与Linux间实现文件传输(C++&C实现)