2016-06-16 6 views
-1
<?php 
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 \n"; 

// Bind the source address 
if(!socket_bind($sock, "127.0.0.1" , 5000)) 
{ 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode); 

    die("Could not bind socket : [$errorcode] $errormsg \n"); 
} 

echo "Socket bind OK \n"; 

if(!socket_listen ($sock , 10)) 
{ 
    $errorcode = socket_last_error(); 
    $errormsg = socket_strerror($errorcode); 

    die("Could not listen on socket : [$errorcode] $errormsg \n"); 
} 

echo "Socket listen OK \n"; 

echo "Waiting for incoming connections... \n"; 

//Accept incoming connection - This is a blocking call 
$client = socket_accept($sock); 

//display information about the client who is connected 
if(socket_getpeername($client , $address , $port)) 
{ 
    echo "Client $address : $port is now connected to us."; 
} 

socket_close($client); 
socket_close($sock); 

?>Socket-Server arbeitet nicht mit Befehlszeilen

Dieser Code nicht mit Kommandozeile arbeiten. Keine Ausgabe wird in Commend Zeile nach Eingabe angezeigt Aber wenn ich es im Browser versuche funktioniert es in Endlosschleife. Dies ist in Ordnung oder eine andere Möglichkeit, einen Dienst in PHP

Antwort

0

Diese Codes erstellen einen TCP-Server, können Sie Telnet oder Netcat auf den Server zugreifen. Sie können den Browser auch verwenden, um auf den Server zuzugreifen, z. B. "http://127.0.0.1:5000/". Jetzt sehen Sie die Befehlszeilenausgabe. socket_accept blockiert den Prozess, bis eine Anforderung erreicht wird. Weitere Informationen finden Sie unter this page.