Bonjour à tous, je suis en train de développer dans le cadre d'experimentation une application qui envoi un message Udp vers le port 11000 de mon pc. Une Thread est lancée afin de receptionner les divers messages udp reçu.
Voici le code de ma FormPrincipale :
public Thread sampleUdpThread;
public Form1()
{
InitializeComponent();
//Lance l'ecoute Udp
sampleUdpThread = new Thread(new ThreadStart(StartListener));
sampleUdpThread.IsBackground = true;
sampleUdpThread.Start();
Console.WriteLine("Started SampleTcpUdpServer's UDP Receiver Thread!\n");
}
private void button1_Click(object sender, EventArgs e)
{
//Envoi le message
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
ProtocolType.Udp);
IPAddress broadcast = IPAddress.Parse("5.110.124.52");
byte[] sendbuf = Encoding.ASCII.GetBytes(textBox1.Text);
IPEndPoint ep = new IPEndPoint(broadcast, 11000);
s.SendTo(sendbuf, ep);
}
private void StartListener()
{
bool done = false;
int listenPort = 11000;
UdpClient listener = new UdpClient(listenPort);
IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
try
{
while (!done)
{
byte[] bytes = listener.Receive(ref groupEP);
//Lance un Thread gérant le message reçu
Gestion_message _gestionmessage = new Gestion_message(groupEP, bytes);
Thread gèreUdpMessagesThread = new Thread(new ThreadStart(_gestionmessage.udp));
gèreUdpMessagesThread.IsBackground = true;
gèreUdpMessagesThread.Start();
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
finally
{
listener.Close();
}
}
Et la classe geremessageudp :
class Gestion_message
{
IPEndPoint groupEP;
byte[] bytes;
public Gestion_message(IPEndPoint _groupEP, byte[] _bytes)
{
bytes = _bytes;
groupEP = _groupEP;
}
public delegate void addMessageDelegate(string message);
public void Ajout_textbox2(string message)
{
/
/Je souhaiterai pouvoir mettre ici a jour la valeur du TextBox2.Text qui est dans la form 1 }
public void udp()
{
MessageBox.Show("Received broadcast from " + groupEP.ToString() + " :\n" +
Encoding.ASCII.GetString(bytes, 0, bytes.Length));
new addMessageDelegate(Ajout_textbox2).Invoke(
"Received broadcast from " + groupEP.ToString() + " :\n" +
Encoding.ASCII.GetString(bytes, 0, bytes.Length));
}
}
Quelqu'un peut il me venir en aide ? Merci d'avance à tous !