Java客户端 - 服务器发送文件Streams

时间:2014-11-22 12:43:07

标签: java client inputstream server

我试着编写一个非常简单的客户端 - 服务器应用程序,客户端发送文本文件.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();
}
}

1 个答案:

答案 0 :(得分:1)

将out.write(b)和fos.write(b)改为fos.write(b,0,x);这将解决错误。