Les Allergies
Alimentaires
Posez votre question Signaler

Chat en php erreur de socket !!!

stefde10 96Messages postés 5 avril 2007Date d'inscription - Dernière réponse le 10 juil. 2007 à 11:34
Bonjour a tous
je viens juste de créer une page de chat interne a mon site et j'ai un message d'erreur qui s'affiche systhématiquement que voici :
Warning: socket_bind() unable to bind address [13]: Permission denied in /mnt/143/sda/1/7/graphi3/Graphi3/chat.php on line 30
Could not bind to address
je vous transmet également mon code :
<?php
$mainsock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_set_option($mainsock, SOL_SOCKET,SO_REUSEADDR, 1);
socket_bind($mainsock, "127.0.0.1", 21) or die('Could not bind to address');
socket_listen($mainsock);
///////////////////
$clients=Array();
$compteur=0;
echo("En attente d'un client !\n");
while(true){
$toread=Array();
array_push($toread,$mainsock);
for ($i=0;$i<count($clients);$i++){ // pour tous les clients
array_push($toread,$clients[$i]["SOCKET"]);
}
socket_select($toread,$a=null,$a=null,$a=null);
if(in_array($mainsock, $toread)){// le mainsock est dans le tableau $toread.
// c'est notre mainsock donc un nouveau client
$sock=socket_accept($mainsock);
echo("Arrivée d'un nouveau client !\n");
$compteur++;
$nb=count($clients);
$clients[$nb]["SOCKET"]=$sock;
$clients[$nb]["UID"]=$compteur;
}else{
// c'est un client qui dit quelque chose
for ($i=0;$i<count($clients);$i++){ // on cherche le client
if(in_array($clients[$i]["SOCKET"], $toread)) { // celui la est dans le tableau toread
$input = socket_read($clients[$i]["SOCKET"], 1024);
if($input==null){
/// deconnection du client !
for ($j=0;$j<count($clients);$j++){ // on le cherche dans le tableau
if($clients[$j]==$clients[$i]){ // trouvé
//////////////////////////////////////////////////Perte d'un client
$clients[$i]["INIT"]=false; // pour ne plus lui envoyer de message
sendUserList($clients[$i]["ROOM"]);
sendRoomList();
//////////////////////////////////////////////////
echo("Deconnection du client ".$clients[$j]["UID"]."\n");
array_splice($clients,$j,1); // on le retire du tableau
$i--;
}
}
}else{
//////////////////////////////////////////////////Message d'un client
$input=trim($input);
$comp=split("=", $input);
if($comp[0]=="INIT"){
$clients[$i]["INIT"]=true; // on mémorise que ce client est initialisé
$clients[$i]["COLOR"]=$comp[1];
$clients[$i]["PSEUDO"]=$comp[2];
}else if($comp[0]=="SETROOM"){
//// on informe ceux de l'ancinne room
$ancienne=$clients[$i]["ROOM"];
$clients[$i]["ROOM"]=$comp[1];
if($ancienne){
sendUserList($ancienne);
}
//// on informe ceux de la nouvelle room
sendUserList($comp[1]);
//// on informe tous le monde des room ouvertes
sendRoomList();
}else if($comp[0]=="MSG"){
sendToAll($clients[$i]["UID"],"MSG=".$clients[$i]["PSEUDO"].">".$comp[1]."=".$clients[$i]["COLOR"],$clients[$i]["ROOM"]);
}
//////////////////////////////////////////////////
}
}
}
}
}
function sendToAll($sauf,$msg,$room){
global $clients;
for($i=0;$i<count($clients);$i++){ // pour tous les clients sauf celui qui envoie
if($sauf!=$clients[$i]["UID"] && ($room==$clients[$i]["ROOM"] || $room==null) && $clients[$i]["INIT"]){
socket_write($clients[$i]["SOCKET"],$msg.chr(0));
}
}
}
function sendRoomList(){
global $clients;
$memoire=Array();
for($i=0;$i<count($clients);$i++){ // pour tous les clients sauf celui qui envoie
if($clients[$i]["INIT"]){
if($memoire[$clients[$i]["ROOM"]]){
$memoire[$clients[$i]["ROOM"]]++;
}else{
$memoire[$clients[$i]["ROOM"]]=1;
}
}
}
$message="ROOMLIST";
foreach($memoire as $nom => $nbc){
$message.="=".$nom.",".$nbc;
}
sendToAll(null,$message,null);
}
function sendUserList($room){
global $clients;
$message="USERLIST";
for($i=0;$i<count($clients);$i++){ // pour tous les clients sauf celui qui envoie
if($clients[$i]["INIT"] && $clients[$i]["ROOM"]==$room){
$message.="=".$clients[$i]["PSEUDO"].",".$clients[$i]["COLOR"];
}
}
sendToAll(null,$message,$room);
}
php?>
Comme vous le constaterez je suis chez Free avec un Port de connexion "21" pour mes bases de données MySQL.
Voici également le lien de ma page Web :
http://graphi3.free.Fr/chat.php.
Quelqu'un peut-il me dire comment régler ce Problem svp ?
Ca serait sympas ;-)
D'avance merci pour vos réponses !
Ps le chat est en Flash !!!
Lire la suite 

Chat en php erreur de socket »

3 réponses
Réponse
+0
moins plus
Au passage, simple curiosité, le CORBA marche t il avec php?
stefde10- 15 avril 2007 à 14:07
oui sans probleme en tout cas avec mon server localHost ! mais pas sur la toile
Ajouter un commentaire
Réponse
+0
moins plus
c est un warning pas une erreur a priori met un @ devant la fonction @socket_bind()
Ajouter un commentaire
Ce document intitulé « Chat en php erreur de socket !!! » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?