Chat en php erreur de socket !!!

Fermé
stefde10 Messages postés 100 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 13 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 ?

Ca serait sympas ;-)

D'avance merci pour vos réponses !

Ps le chat est en Flash !!!
A voir également:

2 réponses

Au passage, simple curiosité, le CORBA marche t il avec php?
0
stefde10 Messages postés 100 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 13 janvier 2014 11
15 avril 2007 à 14:07
oui sans probleme en tout cas avec mon server localHost ! mais pas sur la toile
0
c est un warning pas une erreur a priori met un @ devant la fonction @socket_bind()
0