Java 当我发送总计7mb的数据包时,服务器只接收到16个UDP 512字节的数据包

Java 当我发送总计7mb的数据包时,服务器只接收到16个UDP 512字节的数据包,java,network-programming,udp,packet,Java,Network Programming,Udp,Packet,我将一个7mb的文件分成512b个块,并使用udp将其发送到服务器。大约14000个数据包由客户端发送,但在服务器端套接字上。仅接收16个数据包后,接收(数据包)阻塞 知道这里发生了什么吗?UDP被定义为不可靠的协议。数据包可能丢失,并且没有通知发送方。它们也可能会出现故障,甚至可能会出现副本 UDP适用于不需要错误检查和更正,或由应用程序本身执行错误检查和更正的情况 如果需要可靠的协议,请开始使用TCP。UDP被定义为不可靠的协议。数据包可能丢失,并且没有通知发送方。它们也可能会出现故障,甚至

我将一个7mb的文件分成512b个块,并使用udp将其发送到服务器。大约14000个数据包由客户端发送,但在服务器端套接字上。仅接收16个数据包后,接收(数据包)阻塞


知道这里发生了什么吗?

UDP被定义为不可靠的协议。数据包可能丢失,并且没有通知发送方。它们也可能会出现故障,甚至可能会出现副本

UDP适用于不需要错误检查和更正,或由应用程序本身执行错误检查和更正的情况


如果需要可靠的协议,请开始使用TCP。

UDP被定义为不可靠的协议。数据包可能丢失,并且没有通知发送方。它们也可能会出现故障,甚至可能会出现副本

UDP适用于不需要错误检查和更正,或由应用程序本身执行错误检查和更正的情况



如果您想要一个可靠的协议,请开始使用TCP。

与TCP相比,UDP既不能保证数据包的顺序,也不能保证实际的传输(没有TCP中的流量控制)。请参阅此问题:

与TCP相比,UDP既不能确保数据包顺序,也不能确保实际的传递(没有TCP中的流量控制)。请参阅此问题:

介于两者之间的网络设备将丢弃它们。@否:将我的帖子编辑为512字节。我正在将数据包发送到localhost,为什么我的机器在前16个数据包之后会丢弃所有数据包?1。发布你的代码。2.在发射器端添加睡眠(100)以降低速度(仅用于测试目的)我添加了3ms睡眠,所有数据包现在都通过了。中间的网络设备会丢弃它们。@nos:将我的帖子编辑为512字节。我正在将数据包发送到localhost,为什么我的机器在前16个数据包之后会丢弃所有数据包?1。发布你的代码。2.在发射器端添加一个睡眠(100)以降低速度(仅用于测试目的)我添加了一个3ms睡眠,所有数据包现在都通过了。请注意,流量控制与(保证的)传递不同。它不同。但是如果没有流控制的基本机制,同样基于序列号的NACK消息也无法确定地发送回去。必须实现另一种处理丢失和无序问题的算法,这可能不值得仅在单播中传输文件,而TCP可能是正确的选择。请注意,流控制与(保证)传递不同。它不同。但是如果没有流控制的基本机制,同样基于序列号的NACK消息也无法确定地发送回去。必须实现另一种处理丢失和无序问题的算法,这可能不值得仅在单播中传输文件,因为TCP可能是正确的选择。我知道UDP和TCP是如何工作的,我将UDP用作学习练习。数据包可能会丢失,但为什么1400多个数据包中只有前16个数据包被发送。每次只有前16个数据包到达服务器。@csss如果你以全速向一台机器抛出一堆数据包,而服务器程序没有做出足够快的反应并读取它们,套接字队列将被填满(操作系统只需决定安排一些其他进程几分钟来填满套接字队列)随后的数据包被丢弃。i、 你需要流量控制,UDP没有给你。当然,您的客户机和/或服务器中也可能存在错误。我知道UDP和TCP是如何工作的,我正在使用UDP作为学习练习。数据包可能会丢失,但为什么1400多个数据包中只有前16个数据包被发送。每次只有前16个数据包到达服务器。@csss如果你以全速向一台机器抛出一堆数据包,而服务器程序没有做出足够快的反应并读取它们,套接字队列将被填满(操作系统只需决定安排一些其他进程几分钟来填满套接字队列)随后的数据包被丢弃。i、 你需要流量控制,UDP没有给你。当然,您的客户机和/或服务器中也可能存在错误