stefde10
Messages postés100Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention13 janvier 2014
-
11 avril 2007 à 22:43
edisnotdead -
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 ?
15 avril 2007 à 14:07