[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 socketssocket_close($sock);
?>-- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php

