第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何從Windows進(jìn)行真正的Java ping?

如何從Windows進(jìn)行真正的Java ping?

開心每一天1111 2019-10-30 14:32:01
我在網(wǎng)絡(luò)上有一臺(tái)試圖通過Java程序ping的設(shè)備。通過我的Windows命令提示符,我可以ping設(shè)備地址,并在該地址上執(zhí)行tracert。在線上,我已經(jīng)看到,為了通過Java執(zhí)行ping操作,您必須執(zhí)行以下操作:InetAddress.getByName(address).isReachable(timeout);但是,當(dāng)我在設(shè)備地址上使用此代碼時(shí),它始終在程序中返回false。我正在使用具有良好超時(shí)值的正確IPv4地址。另外,如果我使用本地主機(jī)地址,則可以正常工作。為什么我可以通過cmd而不是通過程序ping設(shè)備?我在各個(gè)地方都聽說過,這不是真正的 ping。有沒有更好的方法來模擬Java中的ping?謝謝
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊

isReachable()如果可以獲取特權(quán),將使用ICMP ECHO REQUESTs ,否則將嘗試在目標(biāo)主機(jī)的端口7(Echo)上建立TCP連接。 因此,您的問題可能是配置問題,沒有足夠的權(quán)限在客戶端計(jì)算機(jī)上執(zhí)行此操作,或者是在服務(wù)器上的端口7問題(如果您的客戶端沒有權(quán)限執(zhí)行此操作)。在您的情況下,可能兩者都有,您都需要解決另一方面,以使其正常工作。

ICMP ECHO REQUEST


我在OSX和Linux客戶端上測試了以下內(nèi)容,并且在測試其他OSX,Linux和Windows Server計(jì)算機(jī)的可達(dá)性時(shí)可以使用。我沒有Windows計(jì)算機(jī)作為客戶端運(yùn)行它。


import java.io.IOException;

import java.net.InetAddress;


public class IsReachable

{

    public static void main(final String[] args) throws IOException

    {

        final InetAddress host = InetAddress.getByName(args[0]);

        System.out.println("host.isReachable(1000) = " + host.isReachable(1000));

    }

}

根據(jù)我在這里閱讀的內(nèi)容。它顯然是Windows的限制,并且ICMP PINGWindows 2000之前的系統(tǒng)調(diào)用都不支持Windows,因此默認(rèn)情況下嘗試連接到端口7,并且在您嘗試“訪問”的計(jì)算機(jī)上被阻止。Java尚不支持新的本機(jī)系統(tǒng)調(diào)用。權(quán)限是針對基于Unix的系統(tǒng),因?yàn)樗鼈冃枰猺oot才能發(fā)送ICMP數(shù)據(jù)包。


如果要為Windows 2000及更高版本推出自己的Windows本機(jī)JNI ICMP PING,則可以使用IcmpSendEcho Function。


查看完整回答
反對 回復(fù) 2019-10-30
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

有點(diǎn)晚了,但是我在嘗試做同樣的事情時(shí)偶然發(fā)現(xiàn)了這一點(diǎn)。


一個(gè)對我有用的變通辦法,是我直接使用命令行ping來完成的。


    public static boolean ping(String host)

{

    boolean isReachable = false;

    try {

        Process proc = new ProcessBuilder("ping", host).start();


        int exitValue = proc.waitFor();

        System.out.println("Exit Value:" + exitValue);

        if(exitValue == 0)

            isReachable = true;

    } catch (IOException e1) {

        System.out.println(e1.getMessage());

        e1.printStackTrace();

    } catch (InterruptedException e) {

        e.printStackTrace();

    }

    return isReachable;

}


查看完整回答
反對 回復(fù) 2019-10-30
  • 3 回答
  • 0 關(guān)注
  • 440 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)