Socket

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 - 2 mars 2005 à 14:39
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 3 mars 2005 à 19:15
salut,
voila j'essaie de faire communiquer deux programmes un en PHP et l'autre en C et j'utilise pr cela les sockets de PHP avec le protocole TCP/IP....
mais ca ne fonctionne pas pourtant le serveur a deja été testé et il marche et mon client est des plus basiques....

client.php:
<?php
echo "Connexion TCP/IP
\n";
/* le port utilisé */
$port = 2002;
/* l'adresse IP du serveur de destination */
$address = "172.20.0.47";
/* Cree une socket TCP/IP. */
$socket = socket_create(AF_INET, SOCK_STREAM, SQL_TCP);
if ($socket<0) {
echo "socket_create() a échoué : raison : " . socket_strerror ($socket) . "\n";
} else {
echo "OK.\n";
}
echo "Essai de connexion à '$address' sur le port '$port'...";
$result = socket_connect($socket, $address, $port);
if ($result < 0) {
echo "socket_connect() a échoué : raison : ($result) " . socket_strerror($result) . "\n";
} else {
echo "OK.\n";
}
$in = "test envoi";
$out = '';
echo "Envoi de la requête : $in";
socket_write($socket, $in, strlen($in));
echo "OK
";
echo "Lire la réponse : \n\n";
while ($out = socket_read($socket, 2048)) {
echo $out;
}
echo "Fermeture de la socket...";
socket_close($socket);
echo "OK.\n\n";
?>

mais a l'ecran il m'affiche cela:

Connexion TCP/IP

Notice: Use of undefined constant SQL_TCP - assumed 'SQL_TCP' in c:\program files\easyphp1-7\www\client_php.php on line 8

Warning: socket_create() expects parameter 3 to be long, string given in c:\program files\easyphp1-7\www\client_php.php on line 8
OK. Essai de connexion à '172.20.0.47' sur le port '2002'...
Warning: socket_connect() expects parameter 1 to be resource, null given in c:\program files\easyphp1-7\www\client_php.php on line 15
OK. Envoi de la requête : test envoi
Warning: socket_write() expects parameter 1 to be resource, null given in c:\program files\easyphp1-7\www\client_php.php on line 24
OK
Lire la réponse :
Warning: socket_read() expects parameter 1 to be resource, null given in c:\program files\easyphp1-7\www\client_php.php on line 27
Fermeture de la socket...
Warning: socket_close() expects parameter 1 to be resource, null given in c:\program files\easyphp1-7\www\client_php.php on line 31
OK.


si quelq'un sy connait un peu et pourrais venir a mon aide ce serait tres appreciable!!!
merci d'avance!!!

5 réponses

LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
2 mars 2005 à 15:23
honnetement c super important pr moi si je ne resouds pas ce pb
ca va etre tendu pour moi.....
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
2 mars 2005 à 15:54
essai fsock_open...


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
3 mars 2005 à 10:12
en fait j'avais deja essayer ca mais voila ca marche pas:

<?php


$serveur = "172.20.0.47";

echo " connexion au serveur $serveur
";
$idSocket = fSockOpen($serveur, 80, $codeErreur, $msgErreur);
if (!$idSocket) {
echo "La connexion via la socket a échouée.
";
echo "Code d'erreur: $codeErreur
";
echo "Message d'erreur: $msgErreur
";
die();
}
// Configuration de la connexion en mode bloquant et avec un timeout de 5
socket_set_blocking($idSocket, TRUE);
socket_set_timeout($idSocket, 5, 0);
$message = "test envoi";
// Envoi de données au serveur
$envoi = fputs($idSocket, $message);
if (!$envoi) {
echo "L envoi du message a échouée.
";
die();
}
// Lecture de la réponse
while (!feof($idSocket)) {
$donnees = fgets($idSocket, 512);
echo "$donnees"; // Affichage de la réponse
}
?>

mais il m'affiche tjrs ca qd j'utilise fsockopen:
Fatal error: Maximum execution time of 30 seconds exceeded in c:\program files\easyphp1-7\www\socket_02.php on line 25

donc je m'étais lancé vers les socket_create mais sans resultats!!!!
0
LaTatadu91 Messages postés 968 Date d'inscription jeudi 20 mai 2004 Statut Membre Dernière intervention 26 avril 2013 1
3 mars 2005 à 13:16
j'ai encore effectuer des tests et du coté serveur voila ce qu'il se passe:
la connexion est bien etablie
le message est bien recu
la reponse est bien envoyée

mais du coté client il reste ce probleme de max excecution time!!!!!
c rageant car ds les deux methodes j'ai le mmeme probleme ...
est ce lié a la config de mon réseaux????
je suis tout triste!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
3 mars 2005 à 19:15
while (!feof($idSocket)) {
$donnees = fgets($idSocket, 512);


pour avoir tout normalement on mets :


while (!feof($idSocket)) {
$donnees = fgets($idSocket, 4096);




mais je sais pas si ça marcheras...



pour ton code C t'as mis quoi... select threads...



In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

0
Rejoignez-nous