【发布时间】:2025-12-07 02:45:02
【问题描述】:
我想创建简单的下载加速器。
它是如何工作的
- 服务器等待传入连接。
- 客户端连接到服务器。
- 然后,服务器将文件大小发送给客户端并等待下载连接。
- 客户端获取文件大小,然后创建下载线程,这些线程连接到服务器。
- 服务器从每个线程获得连接后,服务器将等待来自线程的开始和结束偏移文件。
- 每个线程将开始和结束偏移文件发送到服务器。
- 服务器获得偏移后,服务器会将文件的一部分发送到线程。
- 每个线程都会读写文件。例如buffer.p01、buffer.p02、buffer.p03
- 客户端按顺序将所有文件合并为一个文件。 (尚未实施)
我认为服务器端它工作正常,但客户端它有一些问题。
问题是如果我将 MAXTHREAD 设置为 1,它可以正常工作。但如果我设置了多个,它就会永远卡在某个地方。
这是服务器端代码.. http://pastebin.com/TEakGB0c
这是带有多线程的客户端代码 http://pastebin.com/wKhP7DxS
谢谢你。
【问题讨论】:
-
听起来像是一个死锁问题。没有任何代码,我们真的无法提供帮助吗?
-
我已经在问题的末尾发布了代码。你能看到吗?
-
啊,我现在明白了。让我看看。
-
@Atom,如果您想增加带宽份额,拥有多个连接会有所帮助。如果所有客户端具有相同数量的连接,它们的执行将完全相同。
-
@Peter 我不明白@_@。你能给我举个例子吗?
标签: java multithreading sockets client-server