java - 如何使用udp将大文件从服务器传输到客户端

标签 java udp file-transfer

我想做一个java项目。我的目标是使用 UDP 将大文件从服务器传输到客户端。我发现 UDP 不支持大于 84kb 的数据?那么如何做这个..?有什么办法吗?

最佳答案

如果这是出于任何实际目的,您应该使用 TCP。然而,如果它是为了学习,这将是一个非常有趣的练习:你基本上需要重新实现 TCP 在 IP 之上提供的功能,所以我建议你先阅读它。总结如下:

TCP 的工作原理是将数据分解成适合单个 IP 数据包的更小块。由于 IP 数据包可能在途中被重新排序,有些可能根本不会出现,因此每个数据包都有一个序列号,允许接收者将它们重新组合成正确的顺序。收件人还必须确认每个收到的数据包;如果发送方在一定时间内没有收到数据包 x 的确认,它将重新发送数据包 x (并定期重复发送直到被确认).这意味着收件人还必须准备好接收同一数据包的多个副本。

因此,在您的情况下,您需要为 UDP 数据报确定某种格式:例如,前八个字节可能包含发送方为文件选择的随机标识符(以便不同的文件可以同时传输而无需数据报混淆),接下来的四个字节将是序列号,数据包的其余部分将是实际文件数据的一部分。也许第一个数据包也应该包含文件名,以及文件包含的数据报总数。确认数据报只需要包含标识符和序列号。

关于java - 如何使用udp将大文件从服务器传输到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31494335/

相关文章:

java - 如何在启动画面中缩放图像并停止 2 秒

java - 如何使用反射动态获取调用者实例的实例

c - 使用 epoll 的多线程 UDP 服务器?

java - Java 中的“不要分段”标志

Android WebRTC DataChannel 二进制传输方式

php - 在接收文件上写什么脚本?

java - 从 HashMap 中返回特定值

java - 如何在 x 秒后处理 JOptionPane

java - 模拟器中未从本地主机收到 UDP 数据包

java - Netty:永远不会调用 ChannelRead0