Page 1 sur 1

Problème de socket en PHP

Posté : 27 avr. 2005, 11:45
par Azoul
Bonjour à tous,

je travaille sur un projet, il consiste à dialoguer entre un module Wi-Fi et un serveur local en lui envoyant des trames. Le module comprend la trame et sait s'il doit lire une memoire distante, écrire dans la memoire, effacer la memoire ou changer le<mot de passe administrateu.
c'est pour cela que j'ai opté pour les sockets en php.
je dois alors créer une socket entre le module Wi-Fi et le serveur local, ouvrir la connexion , et dés que le module est connecté au serveur local, on commence le dialogue.
je veux savoir les grands points à suivre afin d'écrire le code nécessaire !!
est ce que j'aurai besoin du code côté client et côté serveur ?
qu'ils sont les modifications à apporter à mon code serveur ci dessous pour réaliser ça ?

Merci d'avance

*************************************************************
<?php
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();

$address = '127.0.0.1';
$port = 10000;

if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
echo "socket_create() a échoué : raison : " . socket_strerror($sock) . "\n";
}

if (($ret = socket_bind($sock, $address, $port)) < 0) {
echo "socket_bind() a échoué : raison : " . socket_strerror ($ret) . "\n";
}

if (($ret = socket_listen($sock, 5)) < 0) {
echo "socket_listen() a échoué : raison : " . socket_strerror ($ret) . "\n";
}

do {
if (($msgsock = socket_accept($sock)) < 0) {
echo "socket_accept() a échoué : raison : " . socket_strerror ($msgsock) . "\n";
break;
}
$msg = "\Bienvenue sur le serveur de test PHP.\n" .
"Pour quitter, tapez 'quit'. Pour éteindre le serveur, tapez 'shutdown'.\n";
socket_write($msgsock, $msg, strlen($msg));

do {
if (false === ($buf = socket_read($msgsock, 2048))) {
echo "socket_read() a échoué : raison : " . socket_strerror ($ret) . "\n";
break 2;
}
if (!$buf = trim($buf)) {
continue;
}
if ($buf == 'quit') {
break;
}
if ($buf == 'shutdown') {
socket_close($msgsock);
break 2;
}
$talkback = "PHP: You said '$buf'.\n";
socket_write($msgsock, $talkback, strlen($talkback));
echo "$buf\n";
} while (true);
socket_close($msgsock);
}
while (true);
socket_close($sock);
?>

Merci pour votre aide

Pb Sans Solution

Posté : 28 avr. 2005, 16:31
par Azoul
Salut,

Quelqu'un à une idée SVP ?

Merci d'avance.

Posté : 28 avr. 2005, 17:12
par goeb
si j'ai bien compris, ton code PHP permet d'accepter des requetes de la part du module wi-fi.
mais finalement tu ne sais pas comment traiter les messages reçus (lors du socket_read).
pour ça il faut que tu trouves le document de specification du driver du module wi-fi.
je pense que le module wi-fi ont des drivers differents selon les marques.

Posté : 01 mai 2005, 15:08
par Invité
Salut,

Je résume encore mon problème :
je veux à partir d'un post client envoyer/recevoir des données d'un client distant en passant par un serveur PHP local. ca se passe sur un réseau local, alors il n'y a pas d'hebérgeur.

Est ce que qlq un a des exemples de scriptes qui permettent de faire ça (send/receive) ?

Merci

Posté : 02 mai 2005, 17:51
par goeb
et par FTP, ça peut pas marcher ?
ftp_connect, ftp_get, ...

à part ça, ton message n'est pas très clair. peux-tu faire un "schema" qui indique les differents ordinateurs en jeu, et les connexions que tu veux, et quel est le type de chaque connexion ?
exemple de "schema" :

machine 1 <--- TCP/IP par wifi ---> machine 2
machine 2 a un serveur web avec PHP
machine 1 doit envoyer un fichier à machine 2.
etc...

Posté : 06 mai 2005, 16:26
par Invité
Je crois que mon problème n'était pas assez clair dans les messages précédents.

Je veux faire dialoguer deux PC clients en passant par un serveur Apache.

client1______________serveur Apache________________client2

Avant le transférer de données entre les deux clients :

• Le client1 se connecte sur le serveur ( "localhost" )
• Le serveur demande au client de s’authentifier
• Menu des choix possibles afficher au client

• Le serveur ouvre la connexion avec le client2
• En fonction du choix : envoyer ou recevoir des données au client2
• Fermer la connexion

Ce que j'ai oublié de préciser, c'est que la communication se fait, aprés la connexion au serveur, entre les 2 clients. alors comment va faire le serveur pour envoyer les paquets recu à l'autre extrémité (client2) ? et comment va repérer cette extrémité (par @dresse IP) ?


Merci pour votre aide

Urgent ! Pb de sockets

Posté : 14 mai 2005, 01:53
par Invité
Salut,

éffectivement le dialogue se fait comme suit :
machine 1 <--- TCP/IP par wifi ---> machine 2.
machine 1 a un serveur Apache.
machine 1 doit envoyer et recevoir des données de la machine 2.

je veux savoir si avec les sockets en php on peut faire des choses pareilles ?

si oui, quelle est la fonction qui permet de faire ca ?

Merci.

Posté : 14 mai 2005, 15:05
par matt_m
bonjour

je verrouille ce topic car si tu relis bien les regles, nous n'acceptons pas les multipostages
tu trouveras donc la suite de ce topic ici