我试着编写一个非常简单的客户端 - 服务器应用程序,客户端发送文本文件.docx格式,服务器只接收。
根据一句话,我的问题是收到的文件(mupp.docx)已损坏: http://www.ladda-upp.se/files/2014/b126506.jpg
我不知道我在哪里做错了。我不确定的事情是:
* fis.read(b)返回-1的最后一次读数是否应写入文件?客户端到输出流?
*我经常冲洗?
*我的字节大小不正确[] b?
我试过在if(x == - 1)休息时移动;两个项目都没有成功。我不知道什么是错的:/你呢?
public class FileSender{
public static void main(String ar[])throws Exception{
Socket clientSocket=new Socket("127.0.0.1",1234);
System.out.println("connected");
OutputStream out=clientSocket.getOutputStream();
FileInputStream fis=new FileInputStream("lupp.docx");
int x=0;
byte[] b = new byte[256];
while(true){
x=fis.read(b);
if(x==-1)break;
out.write(b);
out.flush();
}
fis.close();
out.close();
}
}
public class FileReceiver{
public static void main(String ar[])throws Exception{
ServerSocket ss=new ServerSocket(1234);
Socket clientSocket=ss.accept();
InputStream in=clientSocket.getInputStream();
FileOutputStream fos=new FileOutputStream("mupp.docx");
int x=0;
byte[] b = new byte[256];
while(true){
x=in.read(b);
if(x==-1)break;
fos.write(b);
fos.flush();
}
in.close();
fos.close();
}
}
答案 0 :(得分:1)
将out.write(b)和fos.write(b)改为fos.write(b,0,x);这将解决错误。