gpt4 book ai didi

Java客户端/服务器多线程文件传输问题

转载 作者:行者123 更新时间:2023-12-01 15:49:04 25 4
gpt4 key购买 nike

我想创建简单的下载加速器。

它是如何工作的

  1. 服务器等待传入连接。
  2. 客户端连接到服务器。
  3. 然后,服务器将文件大小发送给客户端并等待下载连接。
  4. 客户端获取文件大小,然后创建下载线程,这些线程连接到服务器。
  5. 服务器从每个线程获得连接后,服务器将等待线程的开始和结束偏移文件。
  6. 每个线程向服务器发送开始和结束偏移文件。
  7. 服务器获得偏移量后,服务器会将文件的部分发送到线程。
  8. 每个线程都会读取和写入文件。例如,buffer.p01、buffer.p02、buffer.p03
  9. 客户端按顺序将所有文件合并为一个文件。 (尚未实现)

我认为服务器端工作正常,但客户端有一些问题。

问题是如果我将 MAXTHREAD 设置为 1,它就能正常工作。但如果我设置了多个,它就会永远卡在某个地方。

这是服务器端代码.. http://pastebin.com/TEakGB0c

这是具有多线程的客户端代码 http://pastebin.com/wKhP7DxS

谢谢你。

最佳答案

你有一个非常明显的大问题。 ServerSocket的accept方法每次都会返回一个新的套接字。在您的服务器代码中

initSocket = servSock.accept();

initSocket 是一个类成员字段,这意味着您将覆盖旧套接字并且永远不会关闭它。您应该启动一个新线程来处理此套接字,从我看来,您似乎只是继续重复使用同一个套接字。那是行不通的。查看有关如何打开套接字的教程。抱歉,我无法提供更多帮助,但这里发生的很多事情都是行不通的。也许您可以开始关注部分代码,我们可以提供更多帮助。

关于Java客户端/服务器多线程文件传输问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6494960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com