java - 客户端 服务器 文件传输 Java

标签 java sockets client-server protocols

我正在尝试使用 Java 编写一个应用程序,该应用程序将允许我在服务器和请求文件的客户端之间传输文件。我打算使用套接字来做到这一点。我的算法有点像这样:

在服务器上: 创建客户端和服务器之间的连接。 连接后找到您需要发送给客户端的文件。 然后将文件的大小发送给客户端。 然后发送分成几部分的文件。

在客户端 创建连接后,请求该文件。 接收文件大小,然后接受数据,直到达到文件大小。 停止。

如果我的算法有错误,请纠正我

最佳答案

这并不是一个真正的“算法”问题;而是一个“算法”问题。您正在设计一个(简单的)协议(protocol)。你所描述的听起来很有道理,但它太模糊,难以实现。你需要更具体。例如,您需要决定一些事情:

  • 接收程序如何知道它应该保存到什么文件名?应该通过套接字发送,还是应该直接询问用户?
  • 文件大小是如何传输的?
    • 是字符串吗?如果是的话,它的长度是如何表示的? (带有空终止符?换行符?)
    • 它是二进制值吗?如果有的话,有多大? (32 位还是 64 位?)什么字节序?
  • “分成几部分”是什么意思?如果您正在写入 TCP 套接字,则无需担心数据包边界; TCP 负责处理这个问题。
  • 收件人是否发回任何信息,例如成功或失败指示?
  • 传输整个文件后会发生什么?
    • 两端都应该假设连接必须关闭吗?
    • 或者您可以通过单个连接发送多个文件吗?如果是这样,发送者如何指示另一个文件将随之而来?

此外,您反向使用了术语“客户端”和“服务器”。通常,“客户端”是发起与服务器连接的计算机,“服务器”是等待客户端连接的计算机。

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

相关文章:

javascript - 创建或更新记录后,客户端(javascript 应用程序)是否应该请求 GET 列表?

java - 通过 Utgard 连接到 Matrikon OPC 模拟服务器

java - Windows XP 无法在关机时终止 javaw.exe

java - 3d 矩形在负 z 方向切换可见边?

php - PHP即时消息传递方法

c# - 使用 Reactive Extensions (Rx) 进行套接字编程实用吗?

c - 如何检查远程UDP端口是否打开? C

python - 使用 TCP 套接字发送/接收数据包

java - 单击 imageview 时 android 应用程序关闭且没有错误

java - Android - 从数组适配器中删除 <string>