Envoyer un message sur l'adresse de diffusion du réseau.

Résolu
Si R Messages postés 3 Date d'inscription jeudi 23 juin 2005 Statut Membre Dernière intervention 10 juillet 2005 - 3 juil. 2005 à 23:22
jolapeste Messages postés 2 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 13 décembre 2009 - 7 janv. 2009 à 11:17
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

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
4 juil. 2005 à 09:15
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
3
Si R Messages postés 3 Date d'inscription jeudi 23 juin 2005 Statut Membre Dernière intervention 10 juillet 2005
10 juil. 2005 à 21:20
Merci !!!
0
jolapeste Messages postés 2 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 13 décembre 2009
7 janv. 2009 à 11:17
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
0
Rejoignez-nous