android - Linux : Udp packet is kept in buffer or dropped when network is unreachable? 我怎么证明呢?

标签 android linux udp

我有一个客户端不断地通过路由器通过 Wifi 连接向主机发送 UDP 数据包。我想知道如果我突然关闭路由器,数据包会发生什么情况。 udp数据包会被丢弃还是保留在某个缓冲区中?

此外,我想知道如果我在关闭 wifi 后立即重新打开 wifi,数据包会发生什么情况。

我需要android linux中的什么工具来证明数据包是否被丢弃(以及在哪一层)或保存在某个缓冲区中(访问缓冲区以验证它是我发送的数据包)?

最佳答案

根据 UDP 的性质,如果网络无法访问,数据包将开始丢弃(丢失)。

一旦网络重新建立,数据包将开始尽最大努力到达目的地(但不会丢失那些)。

要测试此行为,您可以简单地创建一个客户端-服务器 模型应用程序(使用 Android、.NET 或您喜欢的任何语言),客户端开始发送 UDP 数据包(包括序列号和日期戳)到服务器,服务器审核到达/丢失的数据包。在传输过程中,您可以关闭网络以观察行为并测试您需要的案例。

一旦网络中断,您的客户端应用程序将在不知道网络不可用的情况下继续发送数据包,同时所有刷新的数据包都将丢失。一旦网络恢复,传输也将恢复。

关于android - Linux : Udp packet is kept in buffer or dropped when network is unreachable? 我怎么证明呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11500428/

相关文章:

linux - 将包含整数计数的 gzip 二进制文件反卷积为人类可读的数字

c - 如何引发页面错误

java - 无法发送 UDP 消息响应

android - 将 Gradle 和 Android Studio 更新到 3.5 后复制 Hamcrest 和 JUnit 类

android - IntelliJ 调试器在 Android NullPointerException 上完全丢失?

linux - 如何删除最近在 linux 目录中创建的所有文件?

python - 同时处理 TCP 和 UDP 的 Twisted 协议(protocol)

c - 如何将 SOCK_DGRAM 转换为 SOCK_RAW?

java - 当我的 ListFragment 从返回堆栈返回到布局时,如何刷新我的 ListFragment?

java - Activity 内/Activity 间通信