Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[java.net.*] ping mit Hilfe von Sockets

1 view
Skip to first unread message

andreas.linnert

unread,
Aug 17, 2001, 1:19:09 PM8/17/01
to
Hallo,

ich habe versucht, einen Rechner (auch "localhost") per ping zu erreichen.
Bei der Ausführung des Programms erhalte ich immer folgende Meldung:

java.net.ConnectException: Connection refused: no further information
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:312)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:125)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:112)
at java.net.Socket.<init>(Socket.java:273)
at java.net.Socket.<init>(Socket.java:100)
at test.test.main(test.java:18)


Der Quelltext stammt u.a. aus dem Buch "Java ist auch eine Insel" und sieht
folgendermaßen aus:

package test;

import java.io.*;
import java.net.*;

public class test
{
public static void main(String args[]) throws Exception
{
String test = "Pingtest";

if ( args.length == 0 )
{
System.err.println( "Bitte Ping-Host angeben" );
System.exit(0);
}

Socket t = new Socket(args[0], 7);
System.out.print("muh");
BufferedReader in = new BufferedReader(new InputStreamReader
(t.getInputStream()));
PrintStream os = new PrintStream(t.getOutputStream());
os.println(test);
String s = in.readLine();

if (s.equals(test)) System.out.println("Alive!") ;
else System.out.println("Dead or echo port not responding");
t.close();
}
}

Warum erhalt ich immer dies Exception, was mache ich falsch? Sorry..., bin
halt noch ein newbie.

Andreas

Arne Claus

unread,
Aug 17, 2001, 1:53:11 PM8/17/01
to
> ich habe versucht, einen Rechner (auch "localhost") per ping zu erreichen.
> Bei der Ausführung des Programms erhalte ich immer folgende Meldung:

> java.net.ConnectException: Connection refused: no further information

Er kann auf dem Port also nicht connecten.

> Socket t = new Socket(args[0], 7);

Ah - das sollte es sein.
Er versucht eine Verbindung mit Port 7 (aka Echo-Server unter UNIX)
aufzumachen.
Wenn du Windoze hast ist da Essig, weil hinter Port 7 nix is.

mfG Arne


Nico Seessle

unread,
Aug 17, 2001, 2:00:46 PM8/17/01
to
"andreas.linnert" <andreas...@planet-interkom.de> schrieb im
Newsbeitrag news:CYf#oE0JB...@fnews1.vi-internet.de...

> java.net.ConnectException: Connection refused: no further information

[...]


> Socket t = new Socket(args[0], 7);

Und was läuft auf dem "angepingten" Rechner auf Port 7? Nichts? Das ist dann
wohl das Problem.

Zitat aus dem Buch: "Am einfachsten ist der Aufbau zu dem Echo-Server, ein
Service, der alle
ankommenden Kommandos gleich wieder zurückschickt. Wir senden also ein
Testword hin
und überprüfen, ob das gleiche wieder zurückkommt.
Die Verbindung zum Echo-Server herzustellen ist mit der Socket-Klasse kein
Problem. Da
der Echo-Service immer an Port 7 liegt, eröffnet die Anweisung
Sokket(IPAdress,7) die
Verbindung." - vielleicht hätte der Autor auch erwähnen sollen, dass nicht
auf jedem Rechner ein "Echo-Server" läuft....

Kann man durch ausführen von 'netstat -a -n | find "7"' überprüfen - wenn
das irgendwo eine Zeile auftaucht in der "Listen" (oder "Abhören") steht,
dann ist das ein seltsames Problem (eventuell irgendeine Firewall im
Spiel?), das erwarte ich aber eigentlich eher nicht :-)

Nico

Oliver Pfeiffer

unread,
Aug 18, 2001, 4:25:57 AM8/18/01
to
"andreas.linnert" <andreas...@planet-interkom.de> wrote in
<CYf#oE0JB...@fnews1.vi-internet.de>:

>ich habe versucht, einen Rechner (auch "localhost") per ping zu erreichen.

Es gibt leider derzeit keine mir bekannte Methode um ein sehr vom OS
abhängiges Kommando wie PING zu realisieren. Du könntest höchstens das Ping
vom OS ausführen und den Rückgabecode bzw. die Ausgabe analysieren ...

--
cu
o.pfeiffer

ICQ# 84320006
eMail oliver....@gmx.net
--------------------------------------------
TECHNOLOGIE - ZENTRUM INFORMATIK / UNIVERSITAET BREMEN / GERMANY

Uwe Guenther

unread,
Aug 18, 2001, 7:01:11 PM8/18/01
to
Oliver Pfeiffer wrote:
>
> "andreas.linnert" <andreas...@planet-interkom.de> wrote in
> <CYf#oE0JB...@fnews1.vi-internet.de>:
>
> >ich habe versucht, einen Rechner (auch "localhost") per ping zu erreichen.
>
> Es gibt leider derzeit keine mir bekannte Methode um ein sehr vom OS
> abhängiges Kommando wie PING zu realisieren. Du könntest höchstens das Ping
> vom OS ausführen und den Rückgabecode bzw. die Ausgabe analysieren ...


Für ein Ping muss man doch eine RAW Socket aufmachen, geht das überhaupt mit Java?

--
Uwe

Joern Haferstroh

unread,
Aug 19, 2001, 11:56:53 AM8/19/01
to
Uwe Guenther wrote:

> Für ein Ping muss man doch eine RAW Socket aufmachen, geht das überhaupt
> mit Java?

Soviel ich weiß nicht, zumindest nicht mit pure Java (Native code über JNI
geht natürlich). Unter Windows 2000 ist es schon in C++ schwierig, einen
raw socket zu bekommen, das geht nur mit Administratorrechten.

Oliver Pfeiffer

unread,
Aug 19, 2001, 3:14:39 PM8/19/01
to
Joern Haferstroh <nospam.h...@gmx.de> wrote in
<9lonce$5a9$1...@news.online.de>:

>Soviel ich weiß nicht, zumindest nicht mit pure Java (Native code über
>JNI geht natürlich). Unter Windows 2000 ist es schon in C++ schwierig,
>einen raw socket zu bekommen, das geht nur mit Administratorrechten.

naja, aber das echte ping ist doch auch in cpp programmiert und das kann
schließlich jeder benutzer ausführen ... :)

andreas.linnert

unread,
Aug 19, 2001, 2:47:29 PM8/19/01
to
Erstmal Vielen Dank für die rege Beteidigung, leider habe ich bisher aus
Java-Programmen keine Programme aufgerufen. Kennt jemand ein verständliches
Beispiel oder hat jemand einen Tip?

Gibt es da nicht ein Problem, da das Ping-Kommando unter Linux etwas anders
aufgerufen wird?

Andreas


0 new messages