Je ne comprends pas bien pas ce code

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Je ne comprends pas bien pas ce code

par Kalyptus » 04 févr. 2009, 22:59

Merci d'avoir au moins répondu (ahem), en fait dans la mesure où je ne comprends pas bien ce code dans son ensemble, je vois mal comment formuler des questions précises.
C'est la logique du code que je ne saisis pas, je ne demande pas une correction ni quoi que ce soit mais une description partie par partie de ce que fait le code.
Et désolé du up mais sans ça personne ne m'aurait jamais lu, etc etc.

Bonne soirée

par albat » 04 févr. 2009, 22:16

Aujourd'hui, y en aura pour tout le monde ! :lol:
Alors...

Modération :
Kalyptus, PHPFrance n'est pas un site de distribution de scripts gratuits,
ni de débuggage de scripts téléchargés et utilisés sans compréhension.

Merci de prendre le temps de lire les règlements.


En revanche, si ton interrogation concerne un (ou plusieurs) points précis
(tels que les sockets, par exemple), je t"invite à formuler une question à ce sujet
plutôt qu'une demande générale d'explication d'un script entier.

Et...

Modération :
Heavenly, les "up" sont interdits sur PHPFrance.

Merci de prendre le temps de lire les règlements.

par Heavenly » 04 févr. 2009, 22:06

Personne ? :(

Je ne comprends pas bien pas ce code

par Kalyptus » 03 févr. 2009, 17:42

Bonjour,
J'ai récupéré ce code PHP dans un PDF, il sert à mettre en place un serveur ultra simple (le but est de le faire communiquer avec Flash), qui broadcaste à tous les clients connectés ce qu'on lui envoie.
Il tourne en permanence sur mon serveur dédié, et il fonctionne tout à fait. Plusieurs clients Flash s'y connectent, et lorsque l'un d'entre eux envoie un message, celui-ci est envoyé à tous les autres.
Ca peut servir à faire un tchat, un jeu online, etc.
J'ai choisi de prendre une source en PHP car je maîtrise mieux ce langage que le C ou le Python par exemple.
Voici le code, il est placé dans un fichier socket.php que je lance avec setsid php -f socket.php :
<?php 
$adresse = 'ip.publique.de.mon.serveur'; 
$port = 18000;
$connexion = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
socket_set_option($connexion, SOL_SOCKET, SO_REUSEADDR,1);
socket_bind($connexion, $adresse, $port); 
socket_listen($connexion, 5); 
$tabSockets = array($connexion); 

while (true) { 
	$sockets = $tabSockets;
	socket_select($sockets, $write = NULL, $except = NULL, NULL); 
	foreach($sockets as $socket) {
		if ($socket == $connexion) {
			$client = socket_accept($connexion);
                       	array_push($tabSockets, $client);
		} else {
			$flux = socket_recv($socket, $buffer, 2048, 0);
			$allclients = $tabSockets;
			array_shift($allclients);
			send_Message($allclients, $buffer); 
		}
	}
}

function send_Message($clients, $donnees) { 
	foreach($clients as $client) { 
		socket_write($client, $donnees);
	}
}
?>
Le seul problème, c'est qu'étant un débutant en PHP, je ne comprends pas bien ce code :\
J'entends, je comprends rien à comment le tableau est géré, comment la variable $socket est utilisée... La ligne "if ($socket == $connexion) {", à quoi sert-elle ?
Si une âme charitable passe par là et qu'elle comprend le code, aurait-elle l'immense bonté de le commenter, ou de répondre à mes questions ?

Merci d'avance