UDP-клиент не слушает - PullRequest
       6

UDP-клиент не слушает

0 голосов
/ 14 ноября 2018

У меня есть простой UDP-клиент, указывающий на 127.0.0.1:15000, и у меня есть провайдер, который отправляет мне информацию через UDP, и он говорит, что он транслирует сигналы по сети и что он не знает, какие клиенты слушают, и что я долженбыть в состоянии получить сигналы, если я укажу на правильный порт.Я знаю, это звучит немного странно, но что здесь не так?Мой провайдер не прав или я неправильно слушаю трансляцию?

    private int port;
    private UdpClient udp;
    public UdpReceiver(int port)
    {
        this.port = port;
        udp = new UdpClient(port);
        StartListening();
    }
    private void StartListening()
    {
        this.udp.BeginReceive(Receive, new object());
    }
    private void Receive(IAsyncResult ar)
    {
        if (udp != null)
        {
            IPEndPoint ip = new IPEndPoint(IPAddress.Any, port);
            byte[] bytes = udp != null ? udp.EndReceive(ar, ref ip) : null;
            if (bytes != null)
            {
                string message = Encoding.ASCII.GetString(bytes);
                MessageBox.Show(message);
                StartListening();
            }
        }
    }

1 Ответ

0 голосов
/ 14 ноября 2018

Есть несколько проблем с вашим кодом.

Прежде всего, используйте new AsyncCallback(Receive) вместо Receive в качестве параметра BeginReceive.

Во-вторых, по умолчанию создается сокетпри отключенной передаче / приемеВключите его с помощью udp.EnableBroadcast = true; перед StartListening в конструкторе.

В-третьих, метод Receive будет выполняться в потоке пула потоков, и вы не сможете легко вызвать MessageBox.Show там.Замените его на Console.Write для тестирования и получите информацию о теме .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...