[Valhalla:~/Sites/test] rene% /usr/local/php/bin/php s9.php
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
PHP Notice: Undefined variable: client in /Users/rene/Sites/test/s9.php on line 30
...and then it just hangs. Since I'm so new to sockets, and probably don't yet grasp the concepts perfectly, I'm a little lost where to start. Any ideas?
Here's my code:
<?
// VARIABLES set_time_limit(0); $server_ip = "192.168.0.200"; $server_port = "7000"; $max_clients = 10;
// Array will hold client info $clients = Array();
// Create TCP stream socket $sock = socket_create(AF_INET,SOCK_STREAM,0);
// Bind the socket
socket_bind($sock,$server_ip,$server_port) or die('Could not bind to address');
// Start listening... socket_listen($sock);
// Loop while (true) {
// Setup clients listen socket for reading $read[0] = $sock; for ($i = 0; $i < $max_clients; $i++) { if ($client[$i]['sock'] != null) $read[$i+1] = $client[$i]['sock']; }
// Set up a blocking call to socket_select() $ready = socket_select($read,$null=null,$null=null,$null=null); // If a new connection is being made add it to the client array if (in_array($sock,$read)) {
$cur_conn = count($client); for ($i = 0; $i < $cur_conn; $i++) { if ($client[$i]['sock'] == null) { $client[$i]['sock'] = socket_accept($sock); break; } elseif ($i == $max_clients - 1) print ("too many clients");
} if (--$ready <= 0) continue; } // end if in_array // If a client is trying to write, deal with it $cur_conn = count($client); for ($i = 0; $i < $cur_conn; $i++) // for each client { if (in_array($client[$i]['sock'],$read)) { $input = socket_read($client[$i]['sock'],1024); if ($input == null) { // Zero length string meaning disconnected unset($client[$i]); } if ($input == 'exit') { // requested disconnect socket_close($client[$i]['sock']); } elseif ($input) { // strip whitespace and writeback to user $output = ereg_replace("[ \t\n\r]","",$input).chr(0); $socket_write($client[$i]['sock'],$output); } } else { // Close the socket socket_close($client[$i]['sock']); unset($client[$i]); } }
} // end while // Close the master sockets
socket_close($sock); ?>
-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php