UdpClient.BeginReceive(AsyncCallback, Object) Methode

Definitie

Hiermee ontvangt u asynchroon een datagram van een externe host.

public:
 IAsyncResult ^ BeginReceive(AsyncCallback ^ requestCallback, System::Object ^ state);
public IAsyncResult BeginReceive(AsyncCallback requestCallback, object state);
member this.BeginReceive : AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (requestCallback As AsyncCallback, state As Object) As IAsyncResult

Parameters

requestCallback
AsyncCallback

Een AsyncCallback gemachtigde die verwijst naar de methode die moet worden aangeroepen wanneer de bewerking is voltooid.

state
Object

Een door de gebruiker gedefinieerd object met informatie over de ontvangstbewerking. Dit object wordt doorgegeven aan de requestCallback gemachtigde wanneer de bewerking is voltooid.

Retouren

Een IAsyncResult object dat verwijst naar de asynchrone ontvangst.

Voorbeelden

Het volgende codevoorbeeld gebruikt BeginReceive om asynchroon een serverantwoord te ontvangen.

public struct UdpState
{
    public UdpClient u;
    public IPEndPoint e;
}

public static bool messageReceived = false;

public static void ReceiveCallback(IAsyncResult ar)
{
    UdpClient u = ((UdpState)(ar.AsyncState)).u;
    IPEndPoint e = ((UdpState)(ar.AsyncState)).e;

    byte[] receiveBytes = u.EndReceive(ar, ref e);
    string receiveString = Encoding.ASCII.GetString(receiveBytes);

    Console.WriteLine($"Received: {receiveString}");
    messageReceived = true;
}

public static void ReceiveMessages()
{
    // Receive a message and write it to the console.
    IPEndPoint e = new IPEndPoint(IPAddress.Any, s_listenPort);
    UdpClient u = new UdpClient(e);

    UdpState s = new UdpState();
    s.e = e;
    s.u = u;

    Console.WriteLine("listening for messages");
    u.BeginReceive(new AsyncCallback(ReceiveCallback), s);

    // Do some work while we wait for a message. For this example, we'll just sleep
    while (!messageReceived)
    {
        Thread.Sleep(100);
    }
}

Opmerkingen

De asynchrone BeginReceive bewerking moet worden voltooid door de EndReceive methode aan te roepen. Normaal gesproken wordt de methode aangeroepen door de requestCallback gemachtigde.

Deze methode wordt pas geblokkeerd als de bewerking is voltooid. Gebruik de Receive methode om te blokkeren totdat de bewerking is voltooid.

Zie Synchrone methoden asynchroon aanroepen voor gedetailleerde informatie over het gebruik van het asynchrone programmeermodel.

Van toepassing op