繁体   English   中英

Java套接字文件发送

[英]Java sockets file sending

我正在使用Java套接字编写客户端/服务器。 有我的代码:

服务器:

public void sendFile(File file) {
    BufferedOutputStreambufferedOutputStream = new BufferedOutputStream(socket.getOutputStream());
    int count;
    FileInputStream in;
    try {
        in = new FileInputStream(file);
        byte[] mybytearray = new byte[(int) file.length()];
        while ((count = in.read(mybytearray)) > 0) {
            bufferedOutputStream.write(mybytearray, 0, count);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

客户:

public void downloadFile() {
    BufferedInputStream bufferedInputStream = new BufferedInputStream(socket.getInputStream());
    byte[] aByte = new byte[8192];
    int count;
    FileOutputStream in;
    try {
        in = new FileOutputStream("C://fis.txt");
        while ((count = bufferedInputStream.read(aByte)) > 0) {
        System.out.println(count); // <- nothing happens
            in.write(aByte, 0, count);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

为什么第二个函数中的bufferedInputStream为空?

缓冲区已满之前, BufferedOutputStream不会写入数据。 您需要刷新OutputStream

bufferedOutputStream.flush();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM