0){ // accept new client $newsocket = socket_accept($host_socket); // Read from socket $input = socket_read($newsocket, 1024); if($input){ unset($client_header); // Read headers; Split into safe lines $line=explode("\n",preg_replace('/[^A-Za-z0-9\-+\n :;=%*?.,\/_]/','',substr($input,0,2000))); // Split request line into its parts list($client_header["method"],$client_header["url"],$client_header["protocol"])=explode(" ",$line[0]); // Remove the request line again. unset($line[0]); // Make key=value array of headers foreach($line as $l){ list($key,$val)=explode(": ",$l); if($key) $client_header[strtolower($key)]=$val; } // Get IP of client socket_getpeername($newsocket, $client_header['ip']); // Decode url $client_header+=(array)parse_url($client_header['url']); parse_str($client_header['query'],$client_header['arg']); print_r($client_header); // Serve file if(strpos(str_replace("/PHP/socket","",$client_header['path']),".html") && file_exists(__DIR__.str_replace("/PHP/socket","",$client_header['path']))){ echo "Sending a HTML page to client\n"; socket_write($newsocket,"$client_header[protocol] 200 OK\r\n"); socket_write($newsocket,"Content-type: text/html; charset=utf-8\r\n\r\n"); socket_write($newsocket,file_get_contents(__DIR__.str_replace("/PHP/socket","",$client_header['path']))."\r\n\r\n"); socket_close($newsocket); }elseif(strpos(str_replace("/PHP/socket","",($client_header['path'] . "*")),"GETME*") && file_exists(__DIR__.str_replace("/PHP/socket","",$client_header['path']))){ echo "Sending a GETME page to client\n"; socket_write($newsocket,"$client_header[protocol] 200 OK\r\n"); socket_write($newsocket,"Content-type: text/plain; charset=utf-8\r\n\r\n"); socket_write($newsocket,file_get_contents(__DIR__.str_replace("/PHP/socket","",$client_header['path']))."\r\n\r\n"); socket_close($newsocket); }elseif(str_replace("/PHP/socket","",$client_header['path'])=="/test"){ echo "Sending test HTML page to client\n"; socket_write($newsocket,"

Its working!

Have fun\r\n"); socket_write($newsocket,"
Request header: ". print_r($client_header,true) . "
\r\n"); socket_write($newsocket,"\r\n\r\n"); socket_close($newsocket); }else{ echo "$client_header[protocol] 404 Not Found at " . __DIR__ . "\r\n"; socket_write($newsocket,"$client_header[protocol] 404 Not Found\r\n\r\n"); socket_close($newsocket); } } } } socket_close($host_socket); ?>