java中通过socket进行多线程文件传输

问题描述 投票:0回答:1

我想从多线程接收文件块并按顺序写入。

我在一个系统上有一个服务器文件,通过 4 个线程将文件发送到 4 个块中,现在我在另一台机器上有一个客户端程序,我想用 4 个线程接收该文件并以正确的顺序将其写入磁盘。我不知道按顺序接收和写信你能帮忙吗?!

谢谢您的提前!!

java multithreading sockets file-transfer
1个回答
0
投票

除非有特殊情况,否则绝对没有理由这样做。单个线程从 Socket 检索数据的速度远远快于数据传输的速度。

但是如果你确实想这样做,你可以这样做

public static class Multireceiver implements Runnable {
  static AtomicInteger step = new AtomicInteger(0);
  InputStream s;
  int spot;
  public Multireceiver (InputStream in) {
    s = in;
  }
  public void run() {
    spot = step.incrementAndGte();
    //grab a bunch of bytes and put them in an object with the step number attached
  }

}

然后您只需按点订购部分下载并重新组装数据即可。但同样,所有这些通常都是不必要的

© www.soinside.com 2019 - 2024. All rights reserved.