Process p = RuntimegetRuntime()exec("/system/bin/ping -c "+ pingNum + " " + m_strForNetAddress); // 108350111 m_strForNetAddress
int status = pwaitFor();
if (status == 0) {
result="success";
}
else
{
result="failed";
}
String lost = new String();
String delay = new String();
BufferedReader buf = new BufferedReader(new InputStreamReader(pgetInputStream()));
String str = new String();
//读出所有信息并显示
while((str=bufreadLine())!=null){
str = str + "\r\n";
tv_PingInfoappend(str);
}
public boolean isIpReachable(String ip)
{
try
{
InetAddress addr = InetAddressgetByName(ip);
if (addrisReachable(3000))
{
return true;
}
return false;
}
catch (UnknownHostException e)
{
}
catch (IOException e)
{
}
}
如果不想了解,请直接伸手 : android 获取局域网IP与MAC 地址(精简)
开始理清思路:主要使用 linux 两个命令(2017-07-21 fix:这个思路不好,后面使用udp取代毫秒级)
ping: 查询某个ip是否被设备占用
cat :文本输出命令(其实可以使用 arp,但手机需要root权限)
ping:这个我就不说了,实在不知道的,这次度娘不会骗你的。主要讲讲 arp:这里只简单的介绍,推荐一篇博文: Android 平台上的 ARP 和 ARP欺骗 。我们的cat命令主要为了输出手机本地ARP缓存表, ARP命令 可用于查询本机ARP缓存中IP地址和 MAC地址 的对应关系
可以看到我们电脑中缓存的 ip地址与对应的mac地址,但我们手机上又要怎么获得呢?
哈哈其实到这里基本就结束了,也不算什么详解,目前这个方法还有个缺陷就是,耗时比较长,我计算了一下大概得花10秒才能得到局域网内的所有存在的ip与对应的mac。
还有待改善,其实想先取arp缓存,然后把arp中没有的ip地址通过ping测试,然后再取arp缓存,这样可以减少一部分的ping测试线程,但为了保证arp中ip对应的mac永远是新的,只能每次都循环ping测试所有网段内的ip。如果有更好的想法,希望来怼我。
改变思路:使用udp来替代原先多线程ping
具体怎么玩我就不写了,他人的思路,抄袭过来,有损我英俊的形象,写的还是比较好的。
Android 单线程也能极速刷新并获取局域网设备(IP+MAC)信息, 从4分30S 优化到 0150S 不是梦
如果觉得他的用起来麻烦,我的IpScanner类也更新了,可以直接copy使用,还是简单的。
奉上项目地址: IpSanner (一个类一个回调就搞定了,简单的)
你好Asker,先介绍一下PING命令的基础
-----------------------------------------
ping命令--详细帮助
校验与远程计算机或本地计算机的连接。只有在安装 TCP/IP 协议之后才能使用该命令。
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
参数
-t
校验与指定计算机的连接,直到用户中断。
-a
将地址解析为计算机名。
-n count
发送由 count 指定数量的 ECHO 报文,默认值为 4。
-l length
发送包含由 length 指定数据长度的 ECHO 报文。默认值为 64 字节,最大值为 8192 字节。
-f
在包中发送“不分段”标志。该包将不被路由上的网关分段。
-i ttl
将“生存时间”字段设置为 ttl 指定的数值。
-v tos
将“服务类型”字段设置为 tos 指定的数值。
-r count
在“记录路由”字段中记录发出报文和返回报文的路由。指定的 Count 值最小可以是 1,最大可以是 9 。
-s count
指定由 count 指定的转发次数的时间邮票。
-j computer-list
经过由 computer-list 指定的计算机列表的路由报文。中间网关可能分隔连续的计算机(松散的源路由)。允许的最大 IP 地址数目是 9 。
-k computer-list
经过由 computer-list 指定的计算机列表的路由报文。中间网关可能分隔连续的计算机(严格源路由)。允许的最大 IP 地址数目是 9 。
-w timeout
以毫秒为单位指定超时间隔。
destination-list
指定要校验连接的远程计算机。
关于 Ping 的详细信息
Ping--注意
Ping 命令通过向计算机发送 ICMP 回应报文并且监听回应报文的返回,以校验与远程计算机或本地计算机的连接。对于每个发送报文, Ping 最多等待 1 秒,并打印发送和接收把报文的数量。比较每个接收报文和发送报文,以校验其有效性。默认情况下,发送四个回应报文,每个报文包含 64 字节的数据(周期性的大写字母序列)。
可以使用 Ping 实用程序测试计算机名和 IP 地址。如果能够成功校验 IP 地址却不能成功校验计算机名,则说明名称解析存在问题。这种情况下,要保证在本地 HOSTS 文件中或 DNS
数据库中存在要查询的计算机名。
--------------------------------------------------
继续借用PING命令排错来回答您的问题,帮助您进一步了解PING的RE值
利用ping命令判断网络故障
Ping 是Windows系列自带的一个可执行命令。利用它可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障。应用格式:Ping IP地址。该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。
#11Ping本机IP
例如本机IP地址为:1721682002。则执行命令Ping 1721682002。如果网卡安装配置没有问题,则应有类似下列显示:
Replay from 1721682002�bytes=32 time<10ms
Ping statistics for 1721682002�
Packets�Sent=4� Received=4�Lost=0�0% loss �
Approximate round trip times in milli-seconds�
Minimum=0ms�Maxiumu=1ms�Average=0ms
如果在MS-DOS方式下执行此命令显示内容为:Request timed out,则表明网卡安装或配置有问题。将网线断开再次执行此命令,如果显示正常,则说明本机使用的IP地址可能与另一台正在使用的机器IP地址重复了。如果仍然不正常,则表明本机网卡安装或配置有问题,需继续检查相关网络配置。
#12Ping网关IP
假定网关IP为:17216861,则执行命令Ping 17216861。在MS-DOS方式下执行此命令,如果显示类似以下信息:
Reply from 17216861� bytes=32 time=9ms TTL=255
Ping statistics for 17216861�
Packets�Sent=4�Received=4�Lost=0�0% loss �
Approximate round trip times in milli-seconds�
Minimum=1ms�Maximum=9ms�Average=5ms
则表明局域网中的网关路由器正在正常运行。反之,则说明网关有问题。
#13Ping远程IP
这一命令可以检测本机能否正常访问Internet。比如本地电信运营商的IP地址为:20210248141。在MS-DOS方式下执行命令:Ping 20210248141,如果屏幕显示:
Reply from 20210248141� bytes=32 time=33ms TTL=252
Reply from 20210248141� bytes=32 time=21ms TTL=252
Reply from 20210248141� bytes=32 time=5ms TTL=252
Reply from 20210248141� bytes=32 time=6ms TTL=252
Ping statistics for 20210248141�
Packets�Sent=4�Received=4�Lost=0�0% loss �
Approximate round trip times in milli-seconds�
Minimum=5ms�Maximum=33ms�Average=16ms
则表明运行正常,能够正常接入互联网。反之,则表明主机文件(windows/host)存在问题。
东西抢注:注意一下:冲击波之后的DNS服务器都是禁止PING的也就是关闭了ICMP协议的
这样大家可以使用TRACERT这个命令跟踪数据包,也是可以同样达到目的的
----------------------------------------------
以上就是关于android怎么实现ping全部的内容,包括:android怎么实现ping、求助:请问在android中如何用代码检测是否ping通指定的IP地址、android 获取局域网IP与MAC 地址 毫秒级(详解)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)