UdpClient.BeginReceive(AsyncCallback, Object) Metod

Definition

Tar emot ett datagram från en fjärrvärd asynkront.

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

Parametrar

requestCallback
AsyncCallback

Ett AsyncCallback ombud som refererar till den metod som ska anropas när åtgärden är klar.

state
Object

Ett användardefinierat objekt som innehåller information om mottagningsåtgärden. Det här objektet skickas till ombudet requestCallback när åtgärden är klar.

Returer

Ett IAsyncResult objekt som refererar till den asynkrona mottagningen.

Exempel

I följande kodexempel används BeginReceive för att asynkront ta emot ett serversvar.

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);
    }
}

Kommentarer

Den asynkrona BeginReceive åtgärden måste slutföras genom att anropa EndReceive metoden. Metoden anropas vanligtvis av ombudet requestCallback .

Den här metoden blockeras inte förrän åtgärden har slutförts. Om du vill blockera tills åtgärden har slutförts använder du Receive metoden .

Detaljerad information om hur du använder den asynkrona programmeringsmodellen finns i Anropa synkrona metoder asynkront.

Gäller för