Server soll über socket senden
bearbeitet von Jörg ReinholzMoin!
> wenn ich eine Socketverbindung zu meinem Webserver bei Strato aufbaue. 
Rückfrage: virtueller eigener Server (Du hast ein eigenes OS ) oder Massenhosting?
Rest neu formatiert:
====================
> Wie kann ich die Verbindung halten und vom Webserver, wenn sich neue Daten ergeben zum Client senden?
> Ist die Verbindungsdauer über ‘strato’-servertimeout definiert?
> 
> Also:
> 1. client baut Verbindung auf
> 2. Sever wartet auf Ereignis (bis 1min)
> 3. Server sendet Daten zum Client
> 
> Hintergrund:
> Der Server kann keine Verbindung aufbauen, da der Client über UMTS-Stick mit dem Internet verbunden ist und keine eingehende Verbindungen akzeptiert.
> Der Client soll nach Usereingaben am Server, Daten ausdrucken und Bestätigung zum Server senden.
> 
> Eine Verbindung zum Server klappt eigentlich soweit, nur Daten bekomme ich ohne "Connection: Close\r\n\r\n"; gar keine und dann auch nur mit einem einfachen echo .statt socket_write !?
> 
> Client:
> ~~~
> $service_port = 80; 
> /* Die  IP-Adresse des Zielrechners ermitteln. */
> $address = gethostbyname('blog.xxx.de'); //
> 
> // ****** USER UND PASS für htaccess
> $credentials = base64_encode('user:pass'); 
> /* Einen TCP/IP-Socket erzeugen. */
> $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
> echo "Versuche, zu '$address' auf Port '$service_port' zu verbinden ...";
> $result = socket_connect($socket, $address, $service_port);
> $in = "GET /data.php HTTP/1.1\nAuthorization: Basic ".$credentials."\r\n";
> $in .= "Host: blog.xxx.de\r\n";
> //$in .= "Connection: Close\r\n\r\n";
> echo "HTTP HEAD request senden ...";
> socket_write($socket, $in, strlen($in));
> echo "OK.\n";
> echo "Serverantwort lesen:\n\n";
> while ($out = socket_read($socket, 2048)) { 
>     echo $out."<br>\n";
>     //sleep(1);
> }
> socket_close($socket);
> ~~~
> 
> Server:
> ~~~
> if (($msgsock = socket_accept($sock)) === false) {
>     echo "socket_accept() fehlgeschlagen: Grund: " . socket_strerror(socket_last_error($sock)) . "\n";
>     break;
> }
> /* Anweisungen senden. */
> $msg = "\nWillkommen auf dem PHP-Testserver.  \n" .
>     "Um zu beenden, geben Sie 'quit' ein. Um den Server herunterzufahren, geben Sie 'shutdown' ein.\n";
> socket_write($msgsock, $msg, strlen($msg));
> ~~~
Jörg Reinholz
 nicht angemeldet
 nicht angemeldet