Gaen вот скрипт вы можете помочь?

PHP код:
#!/usr/bin/php -q
<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$address = 'localhost';
$port = 9996;
//---- Function to Send out Messages to Everyone Connected ----------------------------------------
function send_Message($allclient, $buf) {
global $client_list;
foreach($allclient as $client) {
if($client_list[$client]['state'] && $client_list[$client]['nick'] != ""){
socket_write($client, trim($buf).chr(0));
}
}
}
//---- Function to Send List of Everyone Connected ----------------------------------------
function who($allclient, $socket) {
global $client_list;
$buf = "";
$counter = 0;
foreach($allclient as $client) {
$buf.=$client_list[$client]['nick'].", ";
$counter++;
}
// socket_write($socket, "There are $counter people in this room: $buf".chr(0));
}
//---- Function to Send out Messages to Individuals ----------------------------------------
function send_Single($socket, $buf) {
socket_write($socket, $buf.chr(0));
}
//---- Start Socket creation for PHP 5 Socket Server -------------------------------------
if (($master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() failed, reason: " . socket_strerror($master) . "\n";
}
socket_set_option($master, SOL_SOCKET,SO_REUSEADDR, 1);
if (($ret = socket_bind($master, $address, $port)) < 0) {
echo "socket_bind() failed, reason: " . socket_strerror($ret) . "\n";
}
if (($ret = socket_listen($master, 5)) < 0) {
echo "socket_listen() failed, reason: " . socket_strerror($ret) . "\n";
}
$read_sockets = array($master);
$client_list = array($master);
//---- Create Persistent Loop to continuously handle incoming socket messages ---------------------
while (true) {
$changed_sockets = $read_sockets;
$num_changed_sockets = socket_select($changed_sockets, $write = NULL, $except = NULL, NULL);
foreach($changed_sockets as $socket) {
if ($socket == $master) {
//---- Accept Incoming Connections and Request Nickname ----------------------------------------
if (($client = socket_accept($master)) < 0) {
echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
continue;
} else {
echo "[connection]:$client\n";
array_push($read_sockets, $client);
$client_list[$client]['state'] = false;
send_Single($client, "<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\" /></cross-domain-policy>\0");
}
} else {
//---- Grab Incoming Messages From all Users ----------------------------------------
$bytes = socket_recv($socket, $buffer, 2048, 0);
//---- Handle User Disconnects ----------------------------------------
if ($bytes == 0) {
$nick = $client_list[$socket]['nick'];
$iindex = array_search($socket, $client_list);
unset($client_list[$iindex]);
$index = array_search($socket, $read_sockets);
unset($read_sockets[$index]);
socket_close($socket);
$allclients = $read_sockets;
array_shift($allclients);
if($client_list[$socket]['nick'] != "" && $client_list[$socket]['nick'] != "<policy-file-request/>"){
send_Message($allclients, "$nick has left the room");
}
}else{
if($bytes){
//---- Set Nickname ----------------------------------------
if($client_list[$socket]['state'] === false){
$client_list[$socket]['nick'] = $tempBuf = trim(trim($buffer));
echo $tempBuf." test";
//send_Single($socket, "Hello $tempBuf! Welcome to the game!");
$allclients = $read_sockets;
array_shift($allclients);
who($allclients, $socket);
if($client_list[$socket]['nick'] != "" && $tempBuf != "<policy-file-request/>"){
//send_Message($allclients, $client_list[$socket]['nick']." has entered the game.");
}
$client_list[$socket]['state'] = true;
}else{
//---- Check Message for Commands, and Respond or Broadcast Message ----------------------------------------
$allclients = $read_sockets;
array_shift($allclients);
if(trim($buffer) == "/who"){
who($allclients, $socket);
}else{
send_Message($allclients, $client_list[$socket]['']."".$buffer);
//send_Message($allclients, $client_list[$socket]['nick']." wrote: ".$buffer);
}
}
}
}
}
}
}
?>
Добавлено через 11 минут
нужно как-то реализовать что-ли как комнаты для клиентов что-бы определенные клиенты общались с определенными клиентами! просто я делаю онлайн игру на flash и мне нужно реализовать свой внутренний чат для каждой комнате на одно сокете! поможете?