Nach server suchen



  • Ich wollte mit meiner ClientSocket das Netzwerk nach der passenden ServerSocket durchsuchen.
    Ich hatte mir das ungefär so vorgestellt, das ich folgenden PseudoCode in einer Schleife ablaufen lasse.

    -eintragen der Ip in die ClientSocket->Adress
    -Öffnen der Verbindung
    -bei Fehler über try/catch abfangen und Ip erhöhen
    -schleife von vorn

    Beim probieren habe ich dann herausgefunden, das das den SChönheitsfehler hat, das die Clientsocket über
    eine Error-Methode verfügt und es deshalb nicht mit try/catch geht.
    Jetzt frage ich mich wie ich mitHilfe meiner ClientSocket im Intranet nach dem passendern Server suchen kann.



  • Zum beispiel mit folgendem Pseudocode:

    -Client-Adresse eintragen
    -Verbinden
    -auf ein flag warten welches sowohl bei onerror als auch on success gesetzt wird und immer mal wieder ProcessMessages() aufrufen
    -auswerten des ergebnises
    von vorne

    Beim Fehlerfall:
    Flag setzen, dass Fehler passiert ist,
    flag setzen, dass die Schleife weiterlaufen kann

    Beim erfolgsfall:
    flagsetzen, dass kein Fehler passiert ist
    Flag setzen, dass die Schleife weiterlaufen kann

    -junix



  • Schön ich probiers nachher mal aus. Gibts noch weiter Idden mit ganz anderen ansätzen, wie man an sowas rangehen kann?



  • Hallo,
    ein ganz anderer Ansatz wäre die Suche nach dem Server über eine UDP Kompo zu machen. Allerdings musst Du bei der Internet->UDP kompo eine neue Instanz zur Laufzeit erstellen da Du sonst die ostIP nicht änden kannst.

    Wenn Du also Die Instanz hast und eine IP angegeben hast rufst Du dann dei Senden Methode auf und im OnRecieve Ereignis prüfst Du dann die Länge der erhaltenden Daten.

    Wenn Du -1 zurück bekommst ist kein Server vorhanden, wenn Du mehr zurück bekommst kannst Du auf einen bestimmtten Wert prüfen.

    Wenn Du eine Antwort erhälts benutzt Du einfach die IP Adresse die im OnReceive Ereignis mit gegeben wird für deine TCP Verbindung (Ich denke mal das Du TCP Benutzen willst)

    Es kann aber auch sein das Du keine Antwort erhälst in diesem Fall musste nen kleinen Trick anwenden der auf ein Flag wartet.
    Das passiert z.B. wenn an dieser Adresse garkein Rechner ist.

    Ich habe es mit einer While Schleife gelöst die eine bestimmte Zeit auf dieses Flag wartet und immer wieder ProcessMessage aufruft.

    Ich hoffe das es einigermassen verständlich ist.

    Dirk



  • Original erstellt von Bigwill:
    das die Clientsocket über eine Error-Methode verfügt und es deshalb nicht mit try/catch geht.

    Keine Ahnung, was du da probiert hast, aber das ist Unsinn. Wie erst unlängst hier diskutiert lassen sich die Socket-Exceptions ganz wunderbar mit try/catch abfangen.



  • Ich hab mit der Suchfunktion ein paar Thread im zusammenhang mit Socketerrors und catchen gefunden aber keinen wo darüber diskutiert worden ist. Kannst du mir eventl. den Link dahin geben, damit ich mir den mal durchlesen kann.

    Mein Code hab ich jetzt nicht mehr im Kopf aber try/catch war auf alle Fälle nicht verkehrt.



  • Stichwort 'fehlerbehandlung clientsocket'.


Anmelden zum Antworten