最近在写一个仿
QQ的软件,通过多
线程实现了多个客户端之间互相收发消息的功能。文件传输和
消息发送的原理大致相同,都是根据我们自己定义的通信
协议来进行。
工作原理:
客户端:
1.
获取文件对象
2.与服务器建立连接
3.建立到服务器的输出流
4.根据通信协议发送文件
服务器端:
1.建立一个服务器等待客户端的连接
2.根据通信协议接收文件
3.将文件保存到指定目录下
我自己定义的通信协议:
1.客户端发送一个字节大小的数据(type),表示发送文件的类型(文件为2)
2.客户端发送一个int大小的数据(destNum),表示接收者的ID(以后实现用户间传送文件)
3.客户端发送一个int大小的数据(fileDateLen),表示文件的长度
4.客户端根据文件的长度,向输出流中写入文件的内容并发送给服务器
5.客户端发送一个int大小的数据(nameLen),表示
文件名的长度(方便服务器根据文件名存储文件)
6.客户端根据文件名的长度,向输出流中写入文件名的内容并发送给服务器
服务器端只需根据通信协议进行接收即可
部分代码截图如下:
客户端发送文件部分:
服务器端接收文件部分:
- class='magplus' title='点击查看原始大小图片' />
- 大小: 105.8 KB
- 大小: 96.6 KB