2017-04-18 4 views
0

Ich habe ein wenig nachgeschaut, verstehe aber immer noch nicht wirklich, ob es möglich ist.Senden von TCP-Daten mit PHP

Ich habe einen kleinen Webserver, der auf meinem privaten Netzwerk sitzt. Ich möchte ein PHP-Skript erstellen, das eine Verbindung zu einem Telnet-Server im privaten Netzwerk herstellt und den Text alle 30 Sekunden sendet.

Offensichtlich ist der einfache Teil der Text und das Timing, aber die Verbindung zu einem TCP Port 23 und das Senden einer Textzeichenfolge scheint aus irgendeinem Grund schwieriger. Was ist der beste Weg, dies zu tun?

+0

PHP-Handbuch hat eine [Beispiel] (http://php.net/manual/en/sockets.examples.php) für Sockel. – frz3993

+0

Und ich habe es versucht. Ich kann eine Verbindung herstellen und es wird die Verbindung angezeigt, aber ich kann scheinbar keine Textfolge an das Gerät senden. – ahackney

Antwort

1

Verwenden PHP Buchsen:

<?php 
while(true){ 
    sleep 30; 
    $fp = fsockopen("www.example.com", 23, $errno, $errstr, 30); 
    if (!$fp) { 
     echo "$errstr ($errno)<br />\n"; 
    } else { 
     fwrite($fp, "The string you want to send"); 
     while (fgets($fp, 128)) { 
      echo fgets($fp, 128); // If you expect an answer 
     } 
     fclose($fp); // To close the connection 
    } 
} 
?> 
+0

[while 'while (! Feof ($ fp))' ist falsch] (http://stackoverflow.com/questions/34425804/php-while-loop-feof-isnt-outputting-showing-everything) – Barmar

+0

Das bedeutet bis Das Ende der Datei :) –

+0

Das ist, was Sie denken würden, aber es ist falsch. Es gibt ein zusätzliches 'fgets()' nach dem Ende der Datei. Lesen Sie die verknüpfte Frage. Sie sollten 'while (fgets ($ fp, 128))' – Barmar