Пример #1
0
     $clients[] = $client;
     $client_index = array_search($client, $clients);
     $addr = "";
     socket_getpeername($client, $addr);
     echo "connected to remote address {$addr}\n";
     on_connect($client_index);
     $n = count($clients) - 1;
     $key = array_search($server, $read);
     unset($read[$key]);
 }
 foreach ($read as $read_client) {
     usleep(10000);
     $client_index = array_search($read_client, $clients);
     $data = @socket_read($read_client, MAX_DATA_LEN, PHP_NORMAL_READ);
     if ($data === False) {
         on_disconnect($client_index);
         socket_close($read_client);
         unset($clients[$client_index]);
         echo "client disconnected\n";
         continue;
     }
     $data = trim($data);
     if ($data == "") {
         continue;
     }
     #echo "message received: $data\n";
     if ($data == "quit" or $data == "shutdown") {
         echo "{$data} received\n";
         if ($data == "quit") {
             socket_shutdown($read_client, 2);
             socket_close($read_client);
Пример #2
0
    $except = NULL;
    socket_select($changed, $write, $except, NULL);
    //have some issues here for connect
    foreach ($changed as $socket) {
        if ($socket == $master) {
            $client = socket_accept($master);
            if ($client < 0) {
                console("socket_accept() failed");
                continue;
            } else {
                connect($client);
            }
        } else {
            $bytes = socket_recv($socket, $buffer, 2048, 0);
            if ($bytes == 0) {
                on_disconnect(getuserbysocket($socket));
                disconnect($socket);
            } else {
                $user = getuserbysocket($socket);
                if (!$user->handshake) {
                    dohandshake($user, $buffer);
                } else {
                    ensure_db();
                    process_multiple($user, $buffer);
                }
            }
        }
    }
}
//-----------------------------------------------
// MySQL database connector