Verfügbarkeit eines Servers

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verfügbarkeit eines Servers

    Ich habe ein Programm programmiert, welches ein TCP-Stream aufbaut zu einem Server. Dies funktioniert auch alles, nur wenn der Server nicht vorhanden ist im lokalen Netzwerk, dann dauert es ziemlich lange bis der Stream das Event ausspuckt, dass er sich nicht mit Server verbinden kann.

    Dazu müsste ich einfach vorher testen können ob ein Server und vielleicht auch noch ein Bestimmter Port erreichbar ist, also sowas ähnliches wie ein Ping. Das ganze würde ich gerne in wenigen Sekunden Testen können.

    grüße a_JAguar
  • So ist das Internet. Dass jemand nicht in 5 Sekunden antwortet, heißt nicht, dass er nicht da ist. Das kennst du doch selbst aus dem Browser.

    Es gibt Methoden, bei denen du ein Time-Out mitgeben kannst. Nur was hilft dir das, wenn du dann ja immer noch nicht weißt, welches du einträgst.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Also wenn Du einen Connect-Timeout verwenden willst, hier ist beschrieben, wie man das machen kann (deckt sich auch mit meinem Wissen)
    developerweb.net/forum/showthread.php?p=13486
    Keine Ahnung, ob das 1:1 auf Obj-C übertragbar ist, ich glaub dies NSSocketPort war ganz schön verkrüppelt. Evtl. kann man auch das Grundprinzip auf die höheren Abstraktionsebenen anwenden...(also: Non-Blocking, und regelmässig testen, ob connected)

    Ich denke, keine Nutzer will 60 sekunden warten, bis endgültig aufgegeben wird, insbs. falls man sich mal beim Namen vertippt hat oder so. Da lieber nach wenigen Sekunden aufgeben und ein "Retry"-Knopf.
    C++
  • Ich benutze diese Methode um den Stream aufzubauen:

    Quellcode

    1. CFStreamCreatePairWithSocketToHost(
    2. NULL,
    3. (CFStringRef) hostName,
    4. port,
    5. ((inputStreamPtr != nil) ? &readStream : NULL),
    6. ((outputStreamPtr != nil) ? &writeStream : NULL)
    7. );

    Ich finde da leider keine ähnliche Methode bei der ich ein Timeout festlegen kann. Mit der Reachebility Classe von Apple hatte das Funktioniert, aber leider funktioniert das bei mir nur mit dem iPhone/iPod und nicht mit dem iPad.

    lg a_JAguar