[D7] Attraper les paquets diffusés en UDP sur LAN?
Attraper les paquets diffusés en UDP sur LAN? [D7] - Delphi/Pascal - Programmation
Sujets relatifs:
Leave a Replay
Make sure you enter the(*)required information where indicate.HTML code is not allowed
Marsh Posté le 05-07-2006 à 10:14:48
Bonjour
Nous utilisons au bureau une application qui affiche sur l'écran l'identifiant de l'appelant (caller ID en anglais). L'application principale tourne sur une machine équipée d'un modem et diffuse par broadcast les informations à toutes les machines connectés au réseau local qui ont une application cliente pour également afficher les informations sur leur écran (les paquets sont envoyés à un port UDP). De cette façon, tout le monde au bureau peut voir qui appelle, et prendre ou pas l'appel. Très sympa.
Voici à quoi ressemblent les paquets, de longueur variable, broadcastés sur le réseau local:
NAME Blow, Joe
NMBR 801-555-1234
RING
Le problème, c'est que nous avons à présent une personne qui travaille dans un bureau dans une autre ville. Comme cette application se base sur les broadcasts, il ne reçoit pas ces messages. J'aimerais donc écrire en Delphi une application en deux parties:
- LOCAL tourne sur une machine au bureau principal, attrape les paquets envoyés par l'application de caller ID, et les envoie par unicast IP à l'application REMOTE qui tourne sur une machine dans l'autre ville
- REMOTE tourne au bureau distant, reçoit les paquets du bureau principal, et les broadcast à son tour afin que l'application cliente fournie avec le logiciel de caller ID puisse afficher une fenêtre sur les écrans.
En somme, une appli qui fait office de pont entre deux réseaux reliés par Internet.
=> Je n'ai jamais fait ce genre de chose, and je penchais pour utiliser au choix Indy ou ICS. Comme les paquets varient en longueur, comme puis-je savoir quand j'ai reçu la totalité du paquet? Ces deux outils permettent-ils au développeur d'indiquer que CRLF est le caractère de fin, avant de générer par exemple un évènement Read?
Merci pour toute piste!