使用TCP通过网络传输文件(加快传输速度)

cod*_*lus 2 java sockets performance networking

我一直试图通过Socket连接发送一个大文件,但它运行缓慢,我想知道是否可以通过某种方式优化此代码以提高传输速度.

这是我发送文件的代码:

byte[] buffer = new byte[65536];
int number;

while ((number = fileInputStream.read(buffer)) != -1) {
    socketOutputStream.write(buffer, 0, number);
}

socketOutputStream.close();
fileInputStream.close();
Run Code Online (Sandbox Code Playgroud)

这是我用来在另一台机器上接收文件的方法:

byte[] buffer = new byte[65536];

InputStream socketStream= clientSocket.getInputStream();
File f=new File("C:\\output.dat");

OutputStream fileStream=new FileOutputStream(f);

while ((number = socketStream.read(buffer)) != -1) {
    fileStream.write(buffer,0,number);
}

fileStream.close();
socketStream.close();
Run Code Online (Sandbox Code Playgroud)

我认为写入fileStream占用了大部分时间.任何人都可以提供加速此代码的任何建议.

Jon*_*eet 5

除了缺少语句finally块之外,该代码没有明显的错误close.

多少数据需要多长时间?FileOutputStream花费时间的是不太可能的 - 网络变得更加缓慢.您可能会从网络中读取并并行写入文件系统,但要做到这一点需要做很多工作,并且它不太可能带来如此多的好处,IMO.