2017-01-27 4 views
0

Ich versuche mit meinem TCP-Server per PHP-Skript zu kommunizieren, aber ich bin nur in der Lage, Befehl einmal zu senden, und wenn ich wieder sende dann im Skript zeigen, dass Daten gesendet wird, aber in Server ich don Es wird kein Befehl angezeigt. Grundsätzlich möchte ich nach dem Senden des Befehls den Befehl exit senden und den Socket schließen.TCP-Server akzeptiert keine zweite Socket senden

<?php 

echo "<br>Message send successfully \n"; 
if (isset($_POST['action'])) { 
switch ($_POST['action']) { 
    case 'open': 
     $message = "CO1OX\n"; 
     break; 
    case 'close': 
     $message = "CO1CX\n"; 
     break; 
} 
} else { 
$error = "Post error"; 
} 


if (!($sock = socket_create(AF_INET, SOCK_STREAM, 0))) { 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode); 
    die("Couldn't create socket: [$errorcode] $errormsg \n"); 
} 

echo "Socket created <br/>"; 
//Connect socket to remote server 
if (!socket_connect($sock, '127.0.0.1', 13000)) { 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode); 
    die("Could not connect: [$errorcode] $errormsg \n"); 
} 
echo "Connection established <br/>"; 

if (!($sent_data = socket_send($sock, $message, strlen($message), 0)))    
{ 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode); 
    die("Could not send data: [$errorcode] $errormsg \n"); 
} 

$message="exit\n"; 
if(!($sent_data = socket_send($sock, $message, strlen($message), 0))) 
     { 
     $errorcode = socket_last_error(); 
     $errormsg = socket_strerror($errorcode); 
     die("Could not send data: [$errorcode] $errormsg \n"); 
} 
socket_shutdown($sock, 2); 
socket_close($sock); 
?> 

Ich habe versucht, mit Telnet zu kommunizieren und es funktioniert gut. Jede Hilfe wäre großartig.

Antwort

0

Ich löste es, indem ich Schlaf von 1ms zwischen zwei aufeinander folgenden Nachrichten legte.

Verwandte Themen