Java通过5个TCP连接下载一个文件

时间:2016-09-15 20:49:29

标签: java multithreading sockets tcp

我正在为我的Networks类工作,我们必须使用套接字从网上下载图像。这个想法是打开5个独立的套接字,在不同的线程中同时运行它们并让它们每个下载文件的一部分然后在获得不同的部分后将它们拼接在一起。我感到困惑的是第二个线程如何知道在第一个结束时启动流?就像我一样:

InputStream is = new BufferedInputStream(socket.getInputStream());
DataOutputStream dout = new DataOutputStream(socket.getOutputStream());
String request = "GET " + path + " HTTP/1.0\n\r\n\r";
dout.write(request.getBytes());

然后是读取流的循环:

while ((bytes = is.read(buffer)) != -1)

但是,如果每次运行新线程并创建新的套接字/ TCP连接时都会发生这种情况,那么如何将流设置为从最后一个流停止的点开始?为了澄清一点,第一个线程应该创建一个名为image.jpg.part1的文件,然后是第二个image.jpg.part2,依此类推。然后我们将这些部分组合成原始图像。

谢谢!

0 个答案:

没有答案