C# obiór broadcastowego pakietu UDP

0

Proszę o pomoc, chodzi o odbiór pakietu broadcastowego wysłanego za pomocą protokołu UDP, w Wiresharku widzę że tak pakiet się pojawia, nawet gdy uruchomię program na innym komputerze w sieci, ale za żadne skarby nie mogę go odebrać. Jeśli podmienię adres na który wysyłam UDP i zamiast broadcastowego wpiszę konkretny adres to pakiet dociera. O co chodzi?
Wysyłam pakiet w ten sposób

UdpClient klient = new UdpClient(IPAddress.Broadcast.ToString(),50001);
            IPEndPoint zdalnyIP = new IPEndPoint(IPAddress.Any, 0);
            byte[] bufor = Encoding.ASCII.GetBytes("HELLO");
            klient.Send(bufor, bufor.Length);
            //byte[] bufor2 = klient.Receive(ref zdalnyIP);
            klient.Close();

Odbieram w ten

IPEndPoint zdalnyIP = new IPEndPoint(IPAddress.Any, 50001);
            UdpClient serwerUDP = new UdpClient(50001);
            //serwerUDP.EnableBroadcast = true;
            //string wiadomosc = (string)(e.Argument as object[])[0]+ ":" + (string)(e.Argument as object[])[1];
            //Byte[] buforwyj = Encoding.ASCII.GetBytes(wiadomosc);
            while (true)
            {
                try
                {
                    Byte[] buforwej = serwerUDP.Receive(ref zdalnyIP);
                    string dane = Encoding.ASCII.GetString(buforwej);
                    //try
                    //{
                    //    if (dane == "HELLO")
                    //    {
                    //        klientUDP.Send(buforwyj, buforwyj.Length);
                    //        SetText("Konfiguracja klienta: " + klientUDP.Client.RemoteEndPoint.ToString());
                    //    }
                    //}
                    //catch (Exception ex)
                    //{
                    //    MessageBox.Show("Błąd2"+ex.ToString());
                    //}
                }
                catch
                {
                    MessageBox.Show("Błąd");
                    serwerUDP.Close();
0

Wszystko ok, zapora blokowała ruch.

0

Z tym sobie poradziłem, ale jak teraz odpowiedzieć na ten pakiet? Jak zrobiłem to w ten sposób

try
                {
                    Byte[] buforwej = serwerUDP.Receive(ref zdalnyIP);
                    string dane = Encoding.ASCII.GetString(buforwej);
                    try
                    {
                        if (dane == "HELLO")
                        {
                            serwerUDP.Send(buforwyj, buforwyj.Length);
                            SetText("Konfiguracja klienta: " + serwerUDP.Client.RemoteEndPoint.ToString());
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Błąd2" + ex.ToString());
                    }
                }
                catch
                {
                    MessageBox.Show("Błąd");
                    serwerUDP.Close();
                }

To dostaję wyjątek
The operation is not allowed on non-connected sockets. W trybie debugowania jak podglądam zmienne to widzę że zmienna zdalnyIP ustawia się na adres IP bramy.

0

Rozwiązałem to w ten sposób że wysyłam i odbieram na dwóch różnych portach, w osobnych wątkach.

1 użytkowników online, w tym zalogowanych: 0, gości: 1