2016-03-24 12 views
1

Ich habe versucht, einen Socket-Server mit Stream-Funktionen einzurichten. Aber ein Problem: In meinem Code, ich habe:PHP - Concurrent stream_socket_accept Verbindungen?

while($conn = @stream_socket_accept($server)) 
{ 

    $request = ""; 

    while(substr($request, -4) !== "\r\n\r\n") 
    { 

    $request .= fread($conn, 1024); 

    } 

    $headers = "HTTP/1.1 200 OK\r\nServer: PHP " . phpversion() . "\r\nContent-Type: text/html\r\n\r\n"; 

    fputs($conn, $headers); 

    fclose($conn); 

} 

So, wie Sie sehen können, ich fclose ($ conn), da sonst die Kopf-/HTML wird nicht an den Client gesendet zu werden, und wenn ich es schließen Es akzeptiert keine anderen Verbindungen. Jede Hilfe wäre sehr dankbar, danke!

EDIT

ich es auf 0.0.0.0:80 renne, können Sie es so versuchen here

+0

Ihre Link-Punkte zu http://192.168.43.10/, die innerhalb Ihres [privaten Netzwerkes] (https://en.m.wikipedia.org/wiki/Private_network) sind, können wir nicht erwarten, darauf zuzugreifen. –

Antwort

0

Ich denke, was Sie wollen eigentlich zu tun ist:

while (true) { 
     $conn = @stream_socket_accept($server); 

     if ($conn) { 
      $request = ""; 

      while(substr($request, -4) !== "\r\n\r\n") { 
       $request .= fread($conn, 1024); 
      } 

      $headers = "HTTP/1.1 200 OK\r\nServer: PHP " . phpversion() . "\r\nContent-Type: text/html\r\n\r\n"; 

      fputs($conn, $headers); 
      fclose($conn); 
     } 

     // only break out of this loop if you want to close the server 
    } 
+0

Ich werde es ausprobieren, danke. – applqpak

+0

Jetzt muss ich eigentlich auf der Seite sein, auf der der stream_socket_server() ausgeführt wird, damit der Client sich verbindet, sonst bleibt die Seite beim Laden hängen, was soll ich dagegen tun? – applqpak