[tout langage] Surveiller en temps reel une trame

Voila j ai un trame qui contient des informations importantes sur les clients qui appele.
Des qu un client, appelle un logiciel propriétaire se lance pour afficher le numéro et faire du couplage telephonie informatique.

Je voudrais pouvoir lire en temps reel les trames de ce logiciel pour executer un script (genre remontee d une fiche client) lorsque que un appel arrive.

Es ce possible de le faire en php?
Si non quel langage serait le mieux pour realiser ca?

merci d’avance

Du temps réel tu dis?

Je te conseillerai d’acheter un bon, très bon processeur, et autre chose que Linux/Windows si tu veux du temps réel :o

C’est possible de le faire en temps réel mais v’la le merdier : tu es obligé de coder dans un langage type C/C++ pour créer un pilote qui se placera dans la liste des IRP[/url], un peu comme le fait [url=http://www.sysinternals.com/Utilities/Filemon.html]FileMon.

Hum, m’avait semblé que les systèmes actuels ne pouvait pas faire du vrai Temps réel, non?

hum ds ce cas es ce que je peux recuperer des trames IP d un port bien precis?

car le numero est également ds ces trames

ms ca sera le meme pb…il me faudra qd meme du temps reel…

C’est bien du temps réel car ton pilote se trouve géré par le noyau et fait en sorte “partie intégrante” de l’OS : il bénéficie donc de quelques particularités dont le temps réel, les privilèges, l’accès bas niveau …

Pour les trames IP, tu peux utiliser la libpcap pour gagner un max de temps ou utiliser winsock pour faire du raw socket.

bon libpcap c ce qu utilise ethereal…

et raw socket c koi?

Es ce que je pouvoir detecter l arrivee d une trame que je veux, la traiter comme je veux et executer un script?

je peux faire le script en php?

oui, la libpcap est utilisé par l’excellent Ethereal, ça permet de montrer le potentiel de cette bibliothèque :slight_smile:

Raw Socket c’est en gros, l’inspection des packets brutes, libre à toi ensuite de construire le paquet et de l’envoyer.

J’ai rien trouvé dans l’aide de php assez bas niveau pour créér son paquet :frowning:

non non

ce que je te demandais c de recuperer en temps un reel des trames avec libpcap ou raw socket. des qu il y a une trame je l envoi vers un script php qui la traite et fait ce que je veux faire

c possible?(bien sur le tout en temps reel)

l extension FAM est interessante…mais ne marche pas sur windows…:frowning:

Tient, je viens de trouver quelque chose qui risque de t’interesser ici :slight_smile:

winpcap et libpcap c pareil sur le fonctionnement?

Ah mince, j’avais pas fait gaffe …
Bon, en restant sur la libpcap, c’est faisaible : tu peux utiliser la mémoire partager pour faire communiquer ton appli qui gèrera la réception des paquets et ton script php.
L’un écrira et l’autre lira (client/serveur) : plus d’informations ici.

oui, c’est exactement la même chose, libpcap c’est pour tous les autres OS (pas windows).

bon je l ai recuperer et installe pa de soucis

par contre j ai trouve comment lance le service (pas dur) mais apres?

ou est le fichier trame correspondant? peut on le limiter a certain port?
comment utiliser la memoire partagee?

mais surtout ce que je comprend spas c comment je pourrais faire un truc en temps reel?

Tu as un exemple de capture ici.
Tu peux spécifier le port via pcap_open (exemple : rpcap://10.11.12.13:1234/adaptername), bref, je t’invite à lire la doc :wink:
Pour la communication, il suffira que tu envoyes le paquet reçu dans ta fonction handler dans un bloc de mémoire que tu enverras dans le contexte de la mémoire partagé, le script php lui, le lira (à toi de définir certaines info pour que tu saches si les données recues sont des paquets).

mais c ca que j arrive pas a comprendre:

winpcap verra tout ce qui se passe, enverra ds la memoire jusqu a la ok.
Mais le script php qui est derriere il va malheureusement jamais etre en temps reel, je ne vais pouvoir lui demande que d etemps en temps d aller voir ce qui se passe non?

Serveur :

  • init de la winpcap,
  • sélection du périphérique,
  • sélection de l’ip:port,
  • paquet_handler : fonction callback chargée de récupérer tous les paquets,
  • envoyer chaque paquet vers l’identificateur de la mémoire partagée, en C, il faudra utiliser CreateFileMapping pour la création de la mémoire partagée, MapViewOfFile pour le mmap.

Client : (php)

  • ouverture de la mémoire partagée via shmop_open,
  • créér un timer réglé à 10 ms (c’est une assez bonne valeur),
  • dans ce timer tu appeleras shmop_read,
  • pour éviter tout problème, tu pourras définir un ID pour bien spécifier que tu vas lire un paquet, pour cela, dans le client, tu crééra une structure avec ton ID + paquet,
    le client ne prendra en compte QUE les données avec l’ID, des qu’il tombera dessus, il saura qu’il devra lire un paquet.

Je peux pas faire plus simple :slight_smile:

PS : je reviens dans 2/3 heures

je suis juste entrain de ma battre pour reussir a creer un projet avec visual studio .net

…sans y arriver

Essaye plutôt avec vc++ 6 voire DevC++ parce que VC .NET est une vraie usine à gaz.