android怎么实现ping

android怎么实现ping,第1张

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 地址 毫秒级(详解)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9464793.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存