Java 强制android立即发送UDP数据包?

Java 强制android立即发送UDP数据包?,java,android,udp,ping,latency,Java,Android,Udp,Ping,Latency,我正在尝试通过WiFi将Galaxy Ace连接到笔记本电脑。两台设备都通过WiFi连接到路由器,并且双方都使用Java 在TCP连接不时给我提供非常高的ping之后,我决定将连接基于UDP,以便能够控制数据包实际发送的时间 然而,Android似乎仍然在缓冲UDP数据包,并且不会立即发送它们。如果在几秒钟内没有传出数据传输,则会完全关闭WiFi 首先,我每隔大约一秒钟不规则地ping一次电话,反复发送ping请求,只要没有收到应答(包括UDP中的数据包丢失): 我解决了这个问题,从手机到电脑发

我正在尝试通过WiFi将Galaxy Ace连接到笔记本电脑。两台设备都通过WiFi连接到路由器,并且双方都使用Java

在TCP连接不时给我提供非常高的ping之后,我决定将连接基于UDP,以便能够控制数据包实际发送的时间

然而,Android似乎仍然在缓冲UDP数据包,并且不会立即发送它们。如果在几秒钟内没有传出数据传输,则会完全关闭WiFi

首先,我每隔大约一秒钟不规则地ping一次电话,反复发送ping请求,只要没有收到应答(包括UDP中的数据包丢失):

我解决了这个问题,从手机到电脑发送数据包,每100毫秒发送一个字节的数据,除此之外,没有任何改变:

    computer -> phone -> computer
    Pinging 192.168.1.40: 4.147753ms
    Pinging 192.168.1.40: 3.738213ms
    Pinging 192.168.1.40: 14.133768ms
    Pinging 192.168.1.40: 4.470561ms
    Pinging 192.168.1.40: 3.628386ms
    Pinging 192.168.1.40: 3.898334ms
    Pinging 192.168.1.40: 3.512401ms
    Pinging 192.168.1.40: 7.907006ms
    Pinging 192.168.1.40: 5.234216ms
    Pinging 192.168.1.40: 5.639137ms
对于我的应用程序来说,低延迟是至关重要的,所以我会继续发送这样的空数据包(至少只要没有真正的数据传输)。我想知道,我是否可以强迫android尽快做出响应,而不需要在网络上到处乱扔无用的数据。那么,有没有更优雅的解决方案

顺便说一下,我假设问题出在智能手机上,而不是电脑上,不过也可能是电脑在等待收到的数据包,然后发送数据包。从我对网络的了解来看,这是不太可能的


谢谢你的帮助

就Java而言,一旦调用了datagramsocket.send(…),数据报就被“发送”。Java应用程序空间中没有缓冲,也无法控制操作系统中的任何缓冲

TCP或UDP不太可能“阻止”数据包。更可能的是,根本问题在于WiFi级别。。。或者可能与路由有关。。。操作系统会延迟发送数据包,直到问题自行解决


谢谢,我现在实现了只在没有其他数据包发送的情况下发送这些保持活动的数据包

听起来你的“保持活力”ping正在产生预期的效果。。。从这一点,我推断根本问题是由于不活动导致WiFi“链接”被删除。(听起来像是一个“不要耗尽电池”的功能…)这表明另一个解决方案是看看你是否可以调整WiFi超时

除此之外,将数据包发送到另一个没有人监听的端口会更快吗?它应该仍然有相同的效果,没有,对吗

这不太可能有什么不同。没有证据表明这个问题是由交通拥挤引起的。证据表明你的手机关闭了非活动的WiFi以节省电能

    computer -> phone -> computer
    Pinging 192.168.1.40: 4.147753ms
    Pinging 192.168.1.40: 3.738213ms
    Pinging 192.168.1.40: 14.133768ms
    Pinging 192.168.1.40: 4.470561ms
    Pinging 192.168.1.40: 3.628386ms
    Pinging 192.168.1.40: 3.898334ms
    Pinging 192.168.1.40: 3.512401ms
    Pinging 192.168.1.40: 7.907006ms
    Pinging 192.168.1.40: 5.234216ms
    Pinging 192.168.1.40: 5.639137ms