Se connecter avec
S'enregistrer | Connectez-vous

socket UDP et broadcast

Dernière réponse : dans Programmation

:hello:  a tous et a toutes (je ne pense pas qu'il n'ya que des monsieurs sur le forum)

J'ai une petite question de candide concernant les sockets UDP sous Linux.
J'ai ecrit un petit programme qui me permet d'envoyer des donnees sur une autre machine via UDP sur un port bien particulier.

Je me demande simplement si je suis oblige de connaitre l'adresse du PC distant sur lequel mon appli se connecte pour transferer les donnees.
Ce PC distant cre une socket en tant que serveur, ouvre le port et ecoute sur cette socket.

De mon cote, je configure la socket en mode broadcast, et je me connecte sur le port en question et hop sendto...
Mais pour creer ma socket, je doit initialiser les sturcutres hostent et servent. Et pas consequent, je suis oblige de connaitre l'adresse du serveur.
Suis-je dans le vrai,; ou puis-je me passer de connaitre l'adresse du serveur ou amchine distante ?

Merci d'avance pour vos conseils et remarques.

Autres pages sur : socket udp broadcast

Lassé par la pub ? Créez un compte

laurentetsandrine2000 a dit :
Mais pour creer ma socket, je doit initialiser les sturcutres hostent et servent. Et pas consequent, je suis oblige de connaitre l'adresse du serveur.
Suis-je dans le vrai,; ou puis-je me passer de connaitre l'adresse du serveur ou amchine distante ?

Cette question ne concerne aucun langage.

Si j'ai bonne mémoire, pour diffuser, tu dois emettre avec l'adresse 255.255.255.255.
Expert Programmation

M'enfin meuh nooooon, même si le protocole UDP n'est pas en mode connecté, il faut bien que tu indiques à qui tu t'adresses.

Pour t'en convaincre, relis la RFC 768.

( Sa traduction en français est due à V. Frémaux. Valéry, si tu me lis... :hello:  )

tu peux la jouer plus fine: un dispatcher (avec nom dns).
chaque équipement qui a besoin de message ou qui diffuse des message est connecté vers le dispatcher.
Message reçut par équipement -> envoyer vers dispatcher -> envoyé vers tous les client connectés
Tu peut améliorer le système en lisant le design pattern "observer" (recherche google). Et le completer avec le design pattern "adapter" si tous les équipement ne parlent pas le même language

J'ai oublie de preciser que la passerelle en question c'est mon equipement.
cela doit se passer comme ca en fait :
liaison serie synchrone -> mon equipement -> UDP vers X autres equipements.
Je ne connais que le numero de port sur lequel je dois me connecter. Je n'ai pas d'adresse de serveur qui peut etre en face.
C'est donc que je ne doit pas en avoir besoin.
Je cherche donc a pouvoir envoyer mes messages en me passant de l'initialisation du champ addresse (sin_addr.sin-addr il me semble) avec une adresse de serveur.
Lassé par la pub ? Créez un compte