由于您说您的客户不想使用FTP,我假设您将编写自己的协议。似乎这些问题中的许多问题与功能规范更相关,您应该向客户提出这些问题,以便为您的项目获得更好的要求。考虑到这一点,这里有一些问题的想法/评论:
- 我们如何保证在目的地收到文件?文件传输完成后,您的协议是否包含某种ACK / NAK消息。
- 如果第一次没有收到文件,我们应该再试一次(即使重启或断电后)?这听起来更像是应由客户指定的功能要求。他们是否需要可靠的转移,然后是的我会认为某种转发是合理的(可能在一些失败后退出。)
- 接收方如何知道收到的文件是否完整?您可以让协议在传输之前发送有关该文件的某种数据,例如客户端可以根据接收到的字节检查的MD5哈希值(如果哈希值匹配,则返回问题1发送ACK / NAK)
- 我们如何同步传输多个文件?如果您正在编写协议,请再次将其作为规范的一部分。例如,“服务器将发送要传输的文件的字节列表数,后跟每个文件的名称,后跟每个文件的字节数。”所以你的服务器可能会发送“2,foo.txt,bar.txt,512,1024,[1516字节的数据]”
- 如何在多个操作系统平台之间进行互操作?我认为你需要对这个问题更加具体,互操作是什么意思?我能想到的一切都应该被Java抽象出来(即文件系统访问,原始套接字通信等)
- 认证怎么样?与可靠性一样,这似乎更像是客户指定的功能要求。
- 审核/记录?如上所述,客户想要什么?
- 归档?如上所述,客户想要什么?
用心学习“rsync”,然后了解它如何解决您的大部分客户需求。