上一篇文章我们实现聊天的功能,下面我们看文件传输怎么实现。
我的做法是:增加一个文件服务器,所有上传和下载文件的操作都由文件服务器来处理。
因此处理逻辑是这样的:如果用户请求上传文件或者下载文件,那么就将用户直接与文件服务器通信,而不用经过中央服务器。
所以现在的问题是知道java怎么实现上传和下载文件,如果这个问题解决了,那基本就搞定了。
首先,文件传输基本都是用面向连接的方式。因为无连接的方式容易丢包,一旦丢了一个数据包,文件就坏了,所有努力全白费。但是需要注意的是面向连接的方式,在服务器处理完一个连接后该连接就关闭了。
下面看上传和下载文件的具体过程。
上传文件:
1.服务器accept()阻塞。
2.用户向服务器发送上传文件的请求,服务器应答请求。
3.客户端发送文件。
4.服务器端接收并保存。
下载文件:
1.用户请求文件列表(这里我没有将文件列表写进文件,只是将它保存在内存中,太懒了)。
2.客户选择要下载的文件序号。
3.服务器将该文件发送给客户端。
4.客户端接收并保存。
我增加了两个主要文件:FileServer.java和FileClient..java。有需要的请下载代码。
测试的时候先运行两个服务器:Server和FileServer,然后在运行Main。
C/S+P2P网络模型(二)--文件传输,布布扣,bubuko.com
原文:http://blog.csdn.net/whoami021/article/details/21656875