Асинхронный обратный вызов не работает в BeginReceive - PullRequest
0 голосов
/ 12 июня 2019

Не работает асинхронный обратный вызов в функции BeginReceive.

Сообщения принимаются в моем порту. Но мой код не может получить и обработать сообщение.

 private void StartListening()
    {
        try
        {
            ar_ = udp.BeginReceive(Receive, new object());
        }
        catch(Exception ex)
        {

        }
    }
    private void Receive(IAsyncResult ar)
    {
        IPEndPoint ip = new IPEndPoint(IPAddress.Any, 7785);
        byte[] bytes = udp.EndReceive(ar, ref ip);
        string message = Encoding.ASCII.GetString(bytes);
        AppendTextBox("Received: " + string.Join("-", bytes) + Environment.NewLine);

    }

    public void Send(byte[] MsgBytes)
    {
        try
        {

            UdpClient client = new UdpClient();
            IPEndPoint ip = new IPEndPoint(IPAddress.Parse(txtbx_ip.Text), 7785);
            client.Send(MsgBytes, MsgBytes.Length, ip);
            client.Close();
            AppendTextBox("Sent: " + string.Join("-", MsgBytes) + Environment.NewLine);
            StartListening();
        }
        catch (Exception ex)
        {
            AppendTextBox("Exception occured: " + ex + Environment.NewLine);
        }
    }

Точка отладки никогда не попадает в функцию Receive после того, как она приходит в BeginReceive. Другая информация заключается в том, что я использую статический IP в моей системе. (Я не уверен, что это проблема).

...