我正在通过UDP数据报发送/接收文件(在localhost上),现在我想组装接收到的数据包以创建接收到的文件并将其保存在某个路径上(例如桌面)..我应该怎么做?任何想法?
您可以在此处找到我的客户端/服务器实现:
Is it possible to use just 1 UDPSocket for sending/receiving on the same port?
谢谢!
答案 0 :(得分:0)
您必须做的是:像TCP这样的算法。通过UDP创建协议,如TCP协议。
1)您需要对UDP数据包进行排序 2)您不需要UDP已经拥有的自定义校验和 3)发送方缓冲区,您的代码将写入缓冲区,您的协议将数据从缓冲区发送到接收方作为一些长度数据包(MTU大小良好,UDP数据包大约1400字节)。数据包将具有序列号。 4)接收器接收数据包检查seq。数字,如果收到数据包的seq。没有预期的seq no,你可以缓冲它来写入文件,否则把这个数据包放在临时缓冲区中,并向发送方发回丢失数据包的信息。 5)接收方将发回最高收到的seq no或丢失的seq nos的ACK。 6)发送方将根据接收方的回复执行。
我想你已经有了一些想法。你需要多线程..在每台机器上你需要一些发送器,接收器,应用程序线程来实现这样的算法。
BTW,我已经实现了这个算法,并取得了很好的效果。我能够以75 Mbps的速度传输文件,其中TCP在100 Mbps互联网连接上的峰值速度未能达到5 Mbps以上,往返时间约为100-200 ms。从印度到加拿大。我希望这对你有所帮助。