Как пинговать IP через сокет и отправлять через него данные? - PullRequest
4 голосов
/ 05 мая 2011

Как я могу пропинговать IP-адрес с помощью программы сокетов и отправлять через нее данные?

Ответы [ 3 ]

8 голосов
/ 05 мая 2011

Вы не можете выполнить ping в Java - ping работает на уровне ICMP, который работает поверх IP, тогда как Java предлагает поддержку UDP (который находится поверх IP) и TCP (снова поверх IP). По сути, это другой протокол (более высокого уровня), для которого вам потребуется собственная (родная) библиотека, написанная для получения доступа к стеку IP.

7 голосов
/ 05 мая 2011

Ping - это определенный протокол ICMP.Вы не можете отправлять пакеты ICMP на чистом Java.

Однако вы можете открыть сокет TCP для определенного порта и отправить ему некоторые данные.Есть миллионы примеров учебных пособий о том, как это сделать.

Я предлагаю вам взглянуть на эти

http://www.google.co.uk/search?q=java+socket+tutorial 6 миллионов результатов

http://www.google.co.uk/search?q=java+socket+example 11,6 миллиона результатов.

Чтобы отправить только один символ, вы можете сделать

Socket s = new Socket(hostname, port);
s.getOutputStream().write((byte) '\n');
int ch = s.getInputStream().read();
s.close();
if (ch == '\n') // its all good.
0 голосов
/ 25 июля 2014

Ping использует протокол ICMP, который недоступен в Java. Это может быть лучший способ проверить связь с сервером в Java:

       try{
        String s = null;
        List<String> commands = new ArrayList<String>();
        commands.add("ping");
        commands.add("192.168.2.154");
        ProcessBuilder processbuilder = new ProcessBuilder(commands);
        Process process = processbuilder.start();
        BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
         System.out.println("Here is the standard output of the command:\n");
            while ((s = stdInput.readLine()) != null)
            {
              System.out.println(s);
            }

    }catch (Exception e) {
 System.out.println("This is sad ");

}

Также можно использовать другой способ работы с чистыми Java-сокетами.

...