Envoyer un message sur l'adresse de diffusion du réseau. [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
10 juillet 2005
-
Messages postés
2
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
-
Mon but est d'envoyer un message à l'adresse de diffusion pour que tous
les ordi du réseaux le reçoivent, y répondent et que par la suite
s'enclenche un processus d'ajout de ces différent ordi à la liste des
ordinateurs sur le réseaux. C'est dans le cadre d'une apli de
communication réseaux. Pour le moment je suis obligé d'ajouter
manuellement chaque ordinateurs en saisissant leurs adresses IP, et je
souhaite que ça se fasse automatiquement.



Mais le problème, c'est que j'utilise des Sockets et qu'il me refuse la connexion à l'adresse de diffusion (192.168.0.255).



Peut on envoyer un message à une adresse sans s'y connecter ?



Tout autre méthode permettant le meme résultat est la bien venu !!!



Merci d'avance !!!




3 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
voici comment je procède :

Pour envoyer un message :

System
.Net
.IPAddress localAddress
= Dns
.GetHostByName(SystemInformation
.ComputerName)
.AddressList[
0];

int mcastPort
=
9999;
System
.Net
.IPAddress mcastAddress
= IPAddress
.Parse(
"224.168.100.2");
Socket mSocket
=
new Socket(AddressFamily
.InterNetwork,
SocketType
.Dgram,
ProtocolType
.Udp);
IPAddress localIP
= localAddress;
IPEndPoint localEP
=
new IPEndPoint(localIP,
0);
mSocket
.Bind(localEP);

MulticastOption option
=
new MulticastOption(mcastAddress, localIP);
mSocket
.SetSocketOption(
SocketOptionLevel
.IP,
SocketOptionName
.AddMembership,
option);

try {
EndPoint ep
=
new IPEndPoint(mcastAddress, mcastPort);
mSocket
.SendTo(System
.Text
.UnicodeEncoding
.Unicode
.GetBytes(message
.ToString()), ep);
}
catch (Exception ex) {
MessageBox
.Show(ex
.Message);
}
mSocket
.Close();

Pour écouter :


if(
!SystemInformation
.Network)

return;

bool done
=
false;

byte[] bytes
=
new
byte[
256];
IPEndPoint groupEP
=
new IPEndPoint(mcastAddress, mcastPort);
EndPoint remoteEP
= (EndPoint)
new IPEndPoint(IPAddress
.Any,
0);

mcastSocket
=
new Socket(AddressFamily
.InterNetwork,
SocketType
.Dgram, ProtocolType
.Udp);

IPAddress localIP
= localAddress;
EndPoint localEP
= (EndPoint)
new IPEndPoint(localIP, mcastPort);

mcastSocket
.Bind(localEP);
mcastOption
=
new MulticastOption(mcastAddress, localIP);
mcastSocket
.SetSocketOption(
SocketOptionLevel
.IP,
SocketOptionName
.AddMembership,
mcastOption);

try {

string _msg;

while(
!done) {
mcastSocket
.ReceiveFrom(bytes,
ref remoteEP);

_msg
= System
.Text
.Encoding
.Unicode
.GetString(bytes,
0,bytes
.Length);

if (
this.BCMsgEvent
!=
null) {
BCMsgEventArgs e
=
new BCMsgEventArgs(_msg);

this.BCMsgEvent(
this, e);
}
}
mcastSocket
.Close();
}
catch {
//(/*Exception ex*/) {

// MessageBox.Show(this, ex.Message,this.Text,

// MessageBoxButtons.OK, MessageBoxIcon.Warning);
}


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
Messages postés
3
Date d'inscription
jeudi 23 juin 2005
Statut
Membre
Dernière intervention
10 juillet 2005

Merci !!!
Messages postés
2
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
13 décembre 2009

bonjour, j'ai un projet de fin d'étude qui inclut l'envoi de messages sous réseau wifi
j voudrai bien savoir kel est l code qui permet d'envoyer un msg à un utilisateur précis
j signale que je développe pour le mobile device sous C#
merci