ping in Java?

User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

ping in Java?

Post by Sabina »

У нас на работе один мужик пишет SNMP discovery, и помню еще во время самой первой презентации своей работы, он сказал, что ping на Джаве написать невозможно и ему пришлось подключить С код.

А тут на днях муж мне сказал, что его друг написал ping полностью на Джаве. Попросила у друга код глянуть, а он что-то отмалчивается. То ли жалко показать, то ли он приврал немного?

Очень уж интересно, так можно ли имплементировать ping полностью на Джаве?

Cабина
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: ping in Java?

Post by Palych »

Sabina wrote:У нас на работе один мужик пишет SNMP discovery, и помню еще во время самой первой презентации своей работы, он сказал, что ping на Джаве написать невозможно и ему пришлось подключить С код.

А тут на днях муж мне сказал, что его друг написал ping полностью на Джаве. Попросила у друга код глянуть, а он что-то отмалчивается. То ли жалко показать, то ли он приврал немного?

Очень уж интересно, так можно ли имплементировать ping полностью на Джаве?

Cабина


On podi napisal ping bez ICMP, e.g. via UDP, kak v traceroute...
Pust' muzh podumaet - nuzhen li emu takoj drug... ;)
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: ping in Java?

Post by Sabina »

Palych wrote:On podi napisal ping bez ICMP, e.g. via UDP, kak v traceroute...
Pust' muzh podumaet - nuzhen li emu takoj drug... ;)


Палыч,
Ваша правда: http://www.jadcentral.com/newscentral/feature.jsp?feature_ID=49

Unfortunately, Java does not have support for ICMP packets. ICMP packets can be created via a socket with the SOCK_RAW type, but Java only supports SOCK_STREAM (TCP) and SOCK_DGRAM (UDP) sockets. Also, it is important to note that the ICMP protocol requires all programs using it to be run as root or be setuid to root; however, the TCP and UDP protocols do not require that special privilege.

All hope is not lost.....we still would like to develop a ping utility that will help us to test for the reachability of remote destinations. The utility can be developed using either the TCP or UDP protocol.


А друга мы пока попридержим. Поди не со зла, просто забегался. Он у нас забывчивый такой, помнит только на сколько у них online network gaming sessions назначены.

Сабина
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: ping in Java?

Post by Palych »

Sabina wrote:А друга мы пока попридержим. Поди не со зла, просто забегался. Он у нас забывчивый такой, помнит только на сколько у них online network gaming sessions назначены.

Сабина


Konechno не со зла!
"No osadok ostalsya..." ;)
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: ping in Java?

Post by Sergunka »

Sabina wrote: что ping на Джаве написать невозможно и ему пришлось подключить С код.

Очень уж интересно, так можно ли имплементировать ping полностью на Джаве?



У меня тут два вопроса - почему надо С код использовать куда как легче засадить пинг команду :mrgreen: Ну например как пишут на форуме JLITE

// Get the Runtime and Process
Runtime r = Runtime.getRuntime();
Process p = r.exec("ping " + ipAddress);

// Read the response from the "ping" program
BufferedReader in
= new BufferedReader(new InputStreamReader(p.getInputStream()));

// Now parse the response to see if a reply or timeout was received
while ((line = in.readLine()) != null) {
if(line.startsWith("Reply from")){
// This is a reply
}
if (line.startsWith("Request timed out")){
// This is a timeout


И второй вопрос кто нибудь пользвался API - iReasoning SNMP
http://www.ireasoning.com/products.shtml
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: ping in Java?

Post by Sabina »

Sergunka wrote:У меня тут два вопроса - почему надо С код использовать куда как легче засадить пинг команду :mrgreen: Ну например как пишут на форуме JLITE

// Get the Runtime and Process
Runtime r = Runtime.getRuntime();
Process p = r.exec("ping " + ipAddress);
.....



Creating new process every time?

Сабина
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: ping in Java?

Post by Sergunka »

Sabina wrote:
Sergunka wrote:У меня тут два вопроса - почему надо С код использовать куда как легче засадить пинг команду :mrgreen: Ну например как пишут на форуме JLITE

// Get the Runtime and Process
Runtime r = Runtime.getRuntime();
Process p = r.exec("ping " + ipAddress);
.....



Creating new process every time?

Сабина


Ну не всегда же Дос атака нужна? :mrgreen: Иногда достаточно раз в пол часа дернуть сервер на предмет, а жив ли ты дружище? 8O

Еще есть возражения? :wink:
Palych
Уже с Приветом
Posts: 13682
Joined: 16 Jan 2001 10:01

Re: ping in Java?

Post by Palych »

Sergunka wrote:
Ну не всегда же Дос атака нужна? :mrgreen: Иногда достаточно раз в пол часа дернуть сервер на предмет, а жив ли ты дружище? 8O

Еще есть возражения? :wink:

Portability:
- Parsing results ;
- Path to ping command ;

Code: Select all

bash-2.03$ uname -a
SunOS waapb1 5.8 Generic_108528-23 sun4u sparc SUNW,Sun-Fire-480R
bash-2.03$ ping localhost
bash: ping: command not found
bash-2.03$ /sbin/ping localhost
bash: /sbin/ping: No such file or directory
bash-2.03$ /usr/sbin/ping localhost
localhost is alive
bash-2.03$ uname
SunOS


Code: Select all

$ uname -a
Linux wmprap02 2.4.9-e.24smp #1 SMP Tue May 27 16:07:39 EDT 2003 i686 unknown
$ ping localhost
PING localhost.wireless.attws.com (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=0 ttl=255 time=21 usec
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=255 time=19 usec
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=255 time=27 usec


Code: Select all

$ uname
CYGWIN_NT-5.0

$ ping localhost

Pinging NCD11064357.wireless.attws.com [127.0.0.1] with 32 bytes of data:

Reply from 127.0.0.1: bytes=32 time<10ms TTL=128
Reply from 127.0.0.1: bytes=32 time<10ms TTL=128
Reply from 127.0.0.1: bytes=32 time<10ms TTL=128

Ping statistics for 127.0.0.1:
    Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum =  0ms, Average =  0ms
Control-C
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Re: ping in Java?

Post by Sabina »

Sergunka wrote:Ну не всегда же Дос атака нужна? :mrgreen: Иногда достаточно раз в пол часа дернуть сервер на предмет, а жив ли ты дружище? 8O

Еще есть возражения? :wink:


Ну это вам раз в полчаса, а изначально-то речь шла про SNMP discovery module :wink:

Сабина
Barsik
Posts: 4
Joined: 27 May 2002 15:31

Post by Barsik »

Возможно Вам подойдет...
http://java.sun.com/j2se/1.4.1/docs/gui ... index.html
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Post by Sergunka »

Barsik wrote:Возможно Вам подойдет...
http://java.sun.com/j2se/1.4.1/docs/gui ... index.html


Опана! Я так и знал, что где-то это у сана это должно в 1.4 быть. 8O

Даже подкачал почитать на досуге примерчики.

Ну, спасибо, очень удружили :lol:

Return to “Вопросы и новости IT”