我正在尝试使用Java编写应用程序,这将允许我在服务器和请求文件的客户端之间传输文件。我计划使用套接字。我的算法有点像这样:
在服务器上:
在客户端和服务器之间创建连接。
连接后,您需要将文件发送给客户端。
然后将文件大小发送给客户端。
然后发送分解成几部分的文件。
在客户上
创建连接后,要求提供文件。
接收文件大小,然后接受数据,直到达到文件大小。
停止。
如果我在算法中某处有误,请纠正我
最佳答案
这实际上不是一个“算法”问题;您正在设计一个(简单的)协议。您所描述的内容听起来很合理,但是实在太含糊了,无法实现。你需要更具体。例如,您需要决定一些事情:
接收程序如何知道应保存到哪个文件名?应该通过套接字发送,还是只问用户?
文件大小如何传输?
是字符串吗?如果是这样,如何指示其长度? (使用空终止符?换行符?)
它是二进制值吗?如果是这样,有多大? (32位还是64位?)什么字节序?
“细分”是什么意思?如果您正在写TCP套接字,则无需担心数据包边界; TCP会解决这个问题。
收件人是否将任何东西发回,例如成功或失败指示?
传输完整个文件后会怎样?
两端都应该假定必须关闭连接吗?
还是可以通过单个连接发送多个文件?如果是这样,发件人如何指示将跟随另一个文件?
另外,您正在反向使用术语“客户端”和“服务器”。通常,“客户端”是启动与服务器连接的计算机,而“服务器”是等待客户端连接的计算机。
关于java - 客户端服务器文件传输Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10117410/