JAVA 浅谈文件传输

最近在写一个仿QQ的软件,通过多线程实现了多个客户端之间互相收发消息的功能。文件传输和消息发送的原理大致相同,都是根据我们自己定义的通信协议来进行。
工作原理:

客户端:
1.获取文件对象
2.与服务器建立连接
3.建立到服务器的输出流
4.根据通信协议发送文件

服务器端:
1.建立一个服务器等待客户端的连接
2.根据通信协议接收文件
3.将文件保存到指定目录下

我自己定义的通信协议:
1.客户端发送一个字节大小的数据(type),表示发送文件的类型(文件为2)
2.客户端发送一个int大小的数据(destNum),表示接收者的ID(以后实现用户间传送文件)
3.客户端发送一个int大小的数据(fileDateLen),表示文件的长度
4.客户端根据文件的长度,向输出流中写入文件的内容并发送给服务器
5.客户端发送一个int大小的数据(nameLen),表示文件名的长度(方便服务器根据文件名存储文件)
6.客户端根据文件名的长度,向输出流中写入文件名的内容并发送给服务器
服务器端只需根据通信协议进行接收即可

部分代码截图如下:
客户端发送文件部分:
[img]http://dl2.iteye.com/upload/attachment/0099/1651/1b9b4cc8-893e-3a70-a950-a9a2b518642f.jpg[/img]

服务器端接收文件部分:
[img]http://dl2.iteye.com/upload/attachment/0099/1653/69cce85e-e6e8-3357-a4c5-7c5dafc70dc7.jpg[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值