过去几周我做了相当多的研究,试图创建一个连接诊断工具,我不太想只检查连接是否可用,而是诊断是否存在抖动、丢包等。
到目前为止,Java似乎不支持真正的ICMP请求,而且有一些解决方法,但都没有实现我想要做的事情。
有人知道是否可以构建此类工具,或者我是否应该开始寻找其他选择?
InetAddress似乎正在尽可能地使用ICMP:
https://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html
查看公共布尔值isReacable(int超时)
测试该地址是否可达。尽最大努力的是 实施尝试访问主机,但防火墙和服务器 配置可能会阻止导致无法到达状态的请求 而某些特定端口可能是可访问的。典型的实现 如果可以获得特权,将使用ICMP回应请求, 否则,它将尝试在端口7(Echo)上建立TCP连接 目标主机的。 您可以在这里找到一个简单的使用示例: How to test if a remote system is reachable 或在此处How to ping an IP address