#!/usr/local/bin/php <? /* a simple 'partyline' example of how to use socket_select() and co. to create * a multi-socket php listening daemon with multi-client support. * * modify at will. (by dave on irc.dal.net) */
if ($cdata[$sock]['state'] == STATE_NICKNAME) handle_nickname($sock, $read); else handle_chat($sock, $read); }
/* handle nickname entry */ function handle_nickname($sock, $nick) { global $s_clients, $cdata;
if (!preg_match('/^[a-zA-Z]{1,10}$/', $nick)) { send_single($sock, "That nick is invalid. Please choose another:"); return; }
foreach ($s_clients as $mysock) if (strcasecmp($cdata[$mysock]['nick'], $nick) == 0) { send_single($sock, "That nick is already in use. Please choose another:"); return; }
// we got some data from a client for(j = 0; j <= fdmax; j++) { // send to everyone! if (FD_ISSET(j, &master)) { // except the listener and ourselves // Analyser buf, fx. "5: noget tekst" // 5 er så fd 5 så skriv kun til fd 5. // husk at fortælle brugeren hvad han selv hedder // også skriv foran alle beskeder hvem det kommer fra. if (j != listener && j != i) { if (send(j, buf, nbytes, 0) == -1) { perror("send"); } } } }
Du skal efter nedenstående kommentar, check om det kun skal sendes til en modtager eller til alle, nemest ville være at antage at send til alle er default og man skal skrive fd-nummer + ':' istarten for at skrive til et bestemt fd-nummer.
// we got some data from a client // pseudo code if (to one client) send_to_fd(fd, buf) else send to all
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.