java版本的飞鸽编写(三)--完结

Hi

最近又有人@我了,为啥没下文了?

由于打通了几个关键问题,不想耗费无谓的时间去码代码

另外本人也懒惰了8年一直没有更新,今天借着不想干活,做个总结吧

一些关键问题

Q1:如果知道其它在线用户?

由于没有Server,所有要能显示所有在线用户,那么就可以通过2个方法

方法1:广播包的形式

方法2:遍历一遍自己所在子网的所有IP

发个UDP的包,到默认监听端口(自己可定),那么收到该消息,你就回复自己的IP和用户名,同时刷新自己的好友列表

收到该消息,刷新自己的好友列表,同样,如果退出,那么发个exit更新自己好友列表

Q2:为什么知道其它在线用户,要使用UDP?

因为要使用广播包,而广播包是基于UDP的

如果有些路由器禁止了广播包,可以通过方法2应对

Q3:如何传输文件?

使用TCP协议

由于TCP是基于流的,所以,你可以自己设置一个格式

64 bytes + 128 bytes +raw data

文件大小+ 文件名+文件数据

那么在接收端,伪代码如下

fileSize = read(64)

fileName = read(128)

data = read(fileSize )

saveFile(fileName,data)

Q4:为什么传输文件要用TCP而不是UDP?

因为TCP是有序的,可靠的。

如果使用UDP,可能产生乱序,还需要接收端重装

并且TCP支持多路复用,你可以同时接收不同的文件传输

TCP可以省掉你很多问题

Q5:其它问题?

暂时没想到,如果大家有问题,可以留言,我会尽快回复的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值