Comments 28
Здравствуйте.
Internet Maniac не пользовался, начну с вашей программы.
Спасибо, что делитесь полезностями :)
Internet Maniac не пользовался, начну с вашей программы.
Спасибо, что делитесь полезностями :)
+1
Спасибо, за отличную программу!) Весьма полезная утилита)
0
Спасибо за программу, но при проверке whois на домен.рф вываливается эксепшн.
+1
Исходники покажете?
0
host, ping, jwhois, netcat, netcat, netcat, curl, ab, man
:)
:)
+2
Да, фичи не уникальны, но 1) в винде с консолью сложновато, 2) в curl надо еще решать проблему с кодировкой результата, 3) в списке нет listen, proxy (ставить squid?).
0
Спасибо, но в чем проблема написать свой простейший пинг? Зачем использовать системную библиотеку да еще и на яве?
0
Пинг только под root?
Sep 16, 2011 12:07:21 AM ru.krasu.edhel.jim.win.Worker onError
WARNING: Operation not permitted
java.io.IOException: Operation not permitted
at org.savarese.rocksaw.net.RawSocket.__throwIOException(RawSocket.java:183)
at org.savarese.rocksaw.net.RawSocket.open(RawSocket.java:263)
at ru.krasu.edhel.jim.util.Ping$Pinger.(Ping.java:93)
А так лучше на github выложить — полезная штука.
Sep 16, 2011 12:07:21 AM ru.krasu.edhel.jim.win.Worker onError
WARNING: Operation not permitted
java.io.IOException: Operation not permitted
at org.savarese.rocksaw.net.RawSocket.__throwIOException(RawSocket.java:183)
at org.savarese.rocksaw.net.RawSocket.open(RawSocket.java:263)
at ru.krasu.edhel.jim.util.Ping$Pinger.(Ping.java:93)
А так лучше на github выложить — полезная штука.
0
И может лучше вот это — download.oracle.com/javase/6/docs/api/java/net/InetAddress.html#isReachable(int)
0
А стандартный консольный пинг у Вас работает не под рутом?
У меня репа на hg, так что выложу на bitbucket.
У меня репа на hg, так что выложу на bitbucket.
0
Да я вообще дистра не знаю, у которого нужен рут чтобы сделать ping.
А про реализацию надо почитать чуть-чуть внимательнее
A typical implementation will use ICMP ECHO REQUESTs if the privilege can be obtained, otherwise it will try to establish a TCP connection on port 7
Время его выполнения будет через System.currentMillis(). Не думаю что от тестовой утилиты требуется точность в наносекундах для определения пинга. Как по мне так нужно его наличие, порядок величин и количество потерь. А будет там 67 или 72 мс — не принципиально.
А про реализацию надо почитать чуть-чуть внимательнее
A typical implementation will use ICMP ECHO REQUESTs if the privilege can be obtained, otherwise it will try to establish a TCP connection on port 7
Время его выполнения будет через System.currentMillis(). Не думаю что от тестовой утилиты требуется точность в наносекундах для определения пинга. Как по мне так нужно его наличие, порядок величин и количество потерь. А будет там 67 или 72 мс — не принципиально.
0
Этот метод всё же странный, я пытался пользоваться им и бросил это дело. Сейчас сделал тест с таким кодом:
InetAddress host = InetAddress.getByName(«ya.ru»);
for (int i = 0; i < 10; i++) {
long time = System.nanoTime();
System.out.println(host.isReachable(10000) + " " + (System.nanoTime() — time) / 1000000 + " ms");
}
Обычный пинг выдает 74 мс, а этот код печатает значения от 0 до 13.
По логике вещей, если вдруг используется TCP ECHO, то там разница должна быть больше, чем просто 67 и 72, т. к. в TCP идут пакеты на установление соединения, потом сами пакеты с данными, а потом пакеты с подтверждением о получении и уведомление о закрытии соединения.
InetAddress host = InetAddress.getByName(«ya.ru»);
for (int i = 0; i < 10; i++) {
long time = System.nanoTime();
System.out.println(host.isReachable(10000) + " " + (System.nanoTime() — time) / 1000000 + " ms");
}
Обычный пинг выдает 74 мс, а этот код печатает значения от 0 до 13.
По логике вещей, если вдруг используется TCP ECHO, то там разница должна быть больше, чем просто 67 и 72, т. к. в TCP идут пакеты на установление соединения, потом сами пакеты с данными, а потом пакеты с подтверждением о получении и уведомление о закрытии соединения.
0
Забавно. А какая у вас jvm?
У меня на OpenJDK 6 получается такая картина — если запускать от пользователя ваш код, то получается из tcpdump
18:20:30.505886 IP 192.168.0.188.49302 > www.yandex.ru.echo: Flags [S], seq 2605630052, win 14600, options [mss 1460,sackOK,TS val 3859659 ecr 0,nop,wscale 4], length 0
И отваливается по таймауту. А если пускать как sudo то
18:20:42.716477 IP 192.168.0.188 > www.yandex.ru: ICMP echo request, id 10651, seq 8883, length 44
Так что получается, что все работает как и описано, только надо для java поставить suid, а этого обычно не делают и похоже делать не будут. Но я бы поменял на эту реализацию, потому что не надо нативы таскать с собой. И кстати пинги получаются нормальные
true 32 ms
true 29 ms
true 27 ms
true 27 ms
true 34 ms
true 27 ms
true 26 ms
true 24 ms
true 18 ms
А по поводу github. Я тоже везде где могу использую меркуриал, но хаб он богат community и если очень надо, то есть hg-git.
У меня на OpenJDK 6 получается такая картина — если запускать от пользователя ваш код, то получается из tcpdump
18:20:30.505886 IP 192.168.0.188.49302 > www.yandex.ru.echo: Flags [S], seq 2605630052, win 14600, options [mss 1460,sackOK,TS val 3859659 ecr 0,nop,wscale 4], length 0
И отваливается по таймауту. А если пускать как sudo то
18:20:42.716477 IP 192.168.0.188 > www.yandex.ru: ICMP echo request, id 10651, seq 8883, length 44
Так что получается, что все работает как и описано, только надо для java поставить suid, а этого обычно не делают и похоже делать не будут. Но я бы поменял на эту реализацию, потому что не надо нативы таскать с собой. И кстати пинги получаются нормальные
true 32 ms
true 29 ms
true 27 ms
true 27 ms
true 34 ms
true 27 ms
true 26 ms
true 24 ms
true 18 ms
А по поводу github. Я тоже везде где могу использую меркуриал, но хаб он богат community и если очень надо, то есть hg-git.
+1
У меня sun-овская 1.6 + winxp.
true 12 ms
true 10 ms
true 10 ms
true 10 ms
true 10 ms
true 10 ms
true 0 ms
true 11 ms
true 10 ms
true 10 ms
Я склоняюсь к тому, чтобы вообще выпилить пинг. А ставить такую реализацию, с непонятными значениями под виндой, смысла имхо нет. Или же надо разбираться почему так получается.
true 12 ms
true 10 ms
true 10 ms
true 10 ms
true 10 ms
true 10 ms
true 0 ms
true 11 ms
true 10 ms
true 10 ms
Я склоняюсь к тому, чтобы вообще выпилить пинг. А ставить такую реализацию, с непонятными значениями под виндой, смысла имхо нет. Или же надо разбираться почему так получается.
0
А как быть, если я сижу за прокси сервером?
0
Sign up to leave a comment.
Сетевая утилита JInternetManiac для веб-разработчиков