• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

TCP verbindungstest timeoutfehler unterdrücken

Aldimaster

Neues Mitglied
Hi Leute,

mittlerweile bin ich in meinem Script sehr weit gekommen und habe es ausgiebig verfeinert.
Wie Ihr alles auf meinem anderen Thread wisst erstelle ich gerade ein Formular um einen Teamspeak Server zu erstellen via Telnet. Soweit funktioniert das schon. Der nutzer hat die möglichkeit einen UDP port für seinen Server zu wählen. Jetzt habe ich erstmal so gemeint das der Nutzer erst überprüfen muss ob sein gewünschter UDP port noch verfügbar ist. Er gibt seinen Port ein klickt auf Weiter darauf hin gibt es einen post der dieses Script in einer neuen PHP datei auslöst:

PHP:
<?php
$ip = '127.0.0.1';
$udp = addslashes($_POST['UDPTest']);
$fp = fsockopen($ip, $udp, &$errno, &$errstr, 2);

if(isset($_POST["submit"]))
{

    if(!$fp)
  {
    echo "UDP not available\n";
  } 
  else 
      {
        fclose($fp);
        echo "UDP available";
      }
}
?>
Wie ihr rauslesen könnt soll er eine Verbindung zum gewünschten Port herstellen. Ist dieser erreichbar ist der Port genutzt also logischerweise nicht verfügbar der Nutzer bekommt eine Meldung das der Port nicht verfügbar sei. Sollte keine Verbindung möglich sein so wird im das gegenteil eig. mitgeteilt...

...EIGENTLICH...

das Problem ist das er erstmal 30sek. versucht eine Verbindung aufzubauen. Ich habe das gelöst indem ich ihn ein limit von 2sek. gesetzt habe das funktioniert auch nur bekomme ich dann eine riesen Fehlermeldung die ich nicht haben möchte:

Warning: fsockopen() [function.fsockopen]: unable to connect to 127.0.0.1:8767 (Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat. ) in C:\...\...\htdocs\test.php on line 12
UDP available

Hat wer eine Idee wie ich diese Fehlermeldung unterdrücken kann?

Greetz
Aldimaster
 
Hat wer eine Idee wie ich diese Fehlermeldung unterdrücken kann?
Errorreporting ausstellen oder ein @ vor der Funktion.

Ein Timeout von 2 Sekunden halte ich für ein wenig kurz. min 5, max 25 Sekunden würde ich da nehmen. Aber das ist geschmackssache.

Mfg
 
Danke das wars hab das @ vor der Funktion gesetzt und die Meldung ist weg ;D mittlerweile ist mir aufgefallen das irgendwie das ganze nicht so funktionieren kann weil damit frage ich ab ob eine teltnet verbindung zum jeweiligen port ist ich will aber einen UDP port test machen sprich wie schreib ich das ganze um zu testen ob ein UDP port erreichbar ist?
Google hat mich bisher nach 1std. nicht weitergebracht :sad:

bisher fand ich nur sowas aber das kann ich nicht für meine zwecke verwenden denke ich ich will ja ein UDP test machen:
PHP:
 <?php 
$fp = fsockopen($_SERVER['REMOTE_ADDR'], 8000); 
if(!$fp) { 
    echo "TCP-Test Erfolgreich\n"; 
} else { 
   fwrite($fp, "GET / HTTP/1.0\n\n"); 
   stream_set_timeout($fp, 2,); 
   $res = fread($fp, 2000,); 
   var_dump(stream_get_meta_data($fp)); 
   fclose($fp); 
   echo "TCP-Test Fehlgeschlagen"; 
} 
?>

Allgemein lässt sich so ein UDP Test mit fsockopen schonmal nicht verwirklichen wenn ich mich da nicht irre...

Greetz
Aldimaster
 
Zurück
Oben