Internetverbindung?



  • hallo, wie kann ich in java rausbekommen, ob eine internetverbindung steht?

    danke:)



  • hab diesbezüglich keine wirkliche erfahrung, aber theoretisch wirst du versuchen müssen dich zu einer adresse zu verbinden und wenn du nen timeout kriegst, weißt du, daß die verbindung nicht steht (falls die adresse existiert).

    prinzipiel kommt es auch darauf an, mit welchen klassen du die netzwerkverbindung betreibst. SocketChannel hat ja beispielsweise recht schöne fehlermeldungen, z.b. wenn die gegenseite die verbindung beendet. möglicherweise ist dort auch etwas dabei, um so etwas abzufragen. eine methode isConnected() wirst du aber überall vermutlich vergeblich suchen. bis jetz hab ich noch keine anwendung gesehen, die sich ins internet verbinden wollte und sofort meckerte, wenn ich mich noch nicht angewählt hatte. die haben nach meinen beobachtungen immer erst auf nen timeout gewartet.

    ich hoffe, ich konnte dir helfen
    cu
    wayne



  • Ich hab da auch mal ne Frage zu:

    wenn du nen timeout kriegst

    ich hab mal versucht eine Art "Ping" in Java zu schreiben funktionierte auch ganz gut, das einzige was gestört hat ist folgendes:
    Wenn der zu pingende Rechner nicht verfügbar ist, dann dauert es immer ewigkeiten, bis die Exception geworfen wird.

    Das liegt wohl am Timeout, der so hoch eingestellt ist.
    Aber wie kann ich nun diesen Timeout einstellen, bzw kleiner machen?
    Ich hab bisher noch nix dafür gefunden.

    Achja, die Verbindung erstell ich über ein "Socket" Objekt.

    MfG Ingo

    [ Dieser Beitrag wurde am 08.01.2003 um 17:14 Uhr von Ingo aka Desert Hawk editiert. ]



  • Hallo

    *Das liegt wohl am Timeout, der so hoch eingestellt ist.
    Aber wie kann ich nun diesen Timeout einstellen, bzw kleiner machen?
    Ich hab bisher noch nix dafür gefunden.

    Schau dir mir die Doku zu Socket an. Da stehen folgende Methoden vieleicht helfen die dir weiter.
    1. setSoTimeout(int timeout)
    2. getSoTimeout()

    Ich glaube mir setSoTimeout kannst du die Timeout Zeit selber einstellen.
    Hoffentlich hilft dir das.



  • Danke für die Antwort, aber ich glaub ich hab mein Problem selber nicht erkannt 🙂 ... sorry ...

    Ich glaub mein Problem liegt schon weiter vorne.
    ich erzeuge mir einen Socket und übergebe diesem gleich beim Konstruktor die Parameter IP als String und Port als Integer.

    String ip = "127.0.0.1";
    Socket socket = new Socket(ip,7);

    Problem mit den beiden Methoden... ich kann sie ja erst aufrufen, wenn es ein Objekt dieser Klasse gibt.
    Und wenn ich ein Objekt erzeuge, dann versucht er sich auch gleich zu verbinden (mit dem langem Timeout).

    Es gibt zwar eine Methode socket.connect(), für die gibts allerdings keine Möglichkeit sie mit einem String und einem Port aufzurufen (oder einem von beidem).

    Mein Problem ist nun, wie kann ich dem Socket sagen, dass er sich zu einer IP (als String) und zum Port (als int) connecten soll?

    MfG Ingo

    [ Dieser Beitrag wurde am 08.01.2003 um 21:32 Uhr von Ingo aka Desert Hawk editiert. ]



  • Wer lesen kann der lese 🙂
    http://java.sun.com/j2se/1.4.1/docs/api/java/net/Socket.html

    Sei mir bitte nicht böse, aber zum Java-Programmieren ist die API-Doku ( http://java.sun.com/j2se/1.4.1/docs/api ) eine unerlässliche Hilfe.

    Unter dem ersten Link findest du alles was du brauchst.

    Gehe einmal zu den beiden connect Methoden.
    Dort merkst du, dass du 1 oder 2 Parameter hast, die du übergibst. Der erste Parameter ist ein Objekt der Klasse SocketAdress. In der Socket Adresse ist logischerweise die IP und der Port gespeichert.
    Dann gehst du zur Doku der Klasse SocketAddress.
    Dort siehst du unter "Direkt Known Subclasses", dass es nur eine Klasse gibt in der Java-API, die von dieser Klasse erbt. Diese Klasse ist InetSocketAddress. Dort kannst du im Konstruktor bequem IP und Port übergeben und dann mit diesem Objekt die connect Methode aufrufen.

    Gruss schoetz

    Ach ja ich habe noch etwas vergessen, ich weis nicht ob es so auch wirklich funktioniert ich habe es noch nie ausprobiert, aber laut API sollte es gehen. Und die API hat meistens recht 🙂

    [ Dieser Beitrag wurde am 08.01.2003 um 22:39 Uhr von Schoetz editiert. ]



  • Hehe, jo, stimmt bestimmt,
    aber JBuilder 7 hat nur die API von Java 1.3 ...
    und ich hab 1.4 installiert... in der API von 1.3 war von solch einer Klasse nix zu finden und ich war einfach zu faul um in der richtigen Doku nachzuschauen 😃

    naja, mal schauen... ich werds mal ausprobieren..
    finds dennoch komisch, dass Socket einen Konstruktor anbietet, der soetwas vollbringt, aber keine Methode dazu 😞
    Und warum hat Java v1.3 keinen SocketAddress??? Oder hat nur der JB7 das nicht in seiner Doku???
    Fragen über Fragen...
    Egal, deswegen (und noch wegen einigen anderem) bin ich auch zu Eclipse umgestiegen

    vielen Dank jedenfalls für die Antwort!!!
    🙂

    MfG Ingo



  • JDK 1.3 hat tatsächlich noch keine connect() Methoden in der Klasse Socket. Wie man dort nach instanzieren der Klasse verbindet weis ich nicht.

    Gruss schoetz



  • Hallo

    Und warum hat Java v1.3 keinen SocketAddress??? Oder hat nur der JB7 das nicht in seiner Doku???

    JBuilder verwendet die Doku von SUN. Nur die Klassen die von Borland sind haben auch ihre eigenen Dokus.


Anmelden zum Antworten