Sdílet prostřednictvím


UdpClient.BeginSend Metoda

Definice

Odešle datagram vzdálenému hostiteli asynchronně.

Přetížení

BeginSend(Byte[], Int32, String, Int32, AsyncCallback, Object)

Odešle datagram do cíle asynchronně. Cíl je určen názvem hostitele a číslem portu.

BeginSend(Byte[], Int32, IPEndPoint, AsyncCallback, Object)

Odešle datagram do cíle asynchronně. Cíl je určen parametrem EndPoint.

BeginSend(Byte[], Int32, AsyncCallback, Object)

Odešle datagram vzdálenému hostiteli asynchronně. Cíl byl dříve určen voláním Connectmetody .

BeginSend(Byte[], Int32, String, Int32, AsyncCallback, Object)

Zdroj:
UDPClient.cs
Zdroj:
UDPClient.cs
Zdroj:
UDPClient.cs

Odešle datagram do cíle asynchronně. Cíl je určen názvem hostitele a číslem portu.

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ datagram, int bytes, System::String ^ hostname, int port, AsyncCallback ^ requestCallback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] datagram, int bytes, string? hostname, int port, AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginSend (byte[] datagram, int bytes, string hostname, int port, AsyncCallback requestCallback, object state);
member this.BeginSend : byte[] * int * string * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (datagram As Byte(), bytes As Integer, hostname As String, port As Integer, requestCallback As AsyncCallback, state As Object) As IAsyncResult

Parametry

datagram
Byte[]

Pole Byte obsahující data, která mají být odeslána.

bytes
Int32

Počet bajtů k odeslání.

hostname
String

Cílový hostitel.

port
Int32

Číslo cílového portu.

requestCallback
AsyncCallback

Delegát AsyncCallback , který odkazuje na metodu vyvolání po dokončení operace.

state
Object

Uživatelem definovaný objekt, který obsahuje informace o operaci odeslání. Tento objekt je po dokončení operace předán requestCallback delegátu.

Návraty

Objekt IAsyncResult , který odkazuje na asynchronní odesílání.

Příklady

Následující příklad kódu používá BeginSend k asynchronnímu odeslání požadavku serveru.

public:
    static bool isMessageSent;

    static void SendCallback(IAsyncResult^ asyncResult)
    {
        UdpClient^ udpClient = (UdpClient^)asyncResult->AsyncState;

        Console::WriteLine("number of bytes sent: {0}",
            udpClient->EndSend(asyncResult));
        isMessageSent = true;
    }
public static bool messageSent = false;

public static void SendCallback(IAsyncResult ar)
{
    UdpClient u = (UdpClient)ar.AsyncState;

    Console.WriteLine($"number of bytes sent: {u.EndSend(ar)}");
    messageSent = true;
}
public:
    static void SendMessage3(String^ server, String^ message)
    {
        // create the udp socket
        UdpClient^ udpClient = gcnew UdpClient();

        array<Byte>^ sendBytes = Encoding::ASCII->GetBytes(message);

        // send the message
        // the destination is defined by the server name and port
        udpClient->BeginSend(sendBytes, sendBytes->Length, server, listenPort,
            gcnew AsyncCallback(SendCallback), udpClient);

        // Do some work while we wait for the send to complete. For
        // this example, we'll just sleep
        while (!isMessageSent)
        {
            Thread::Sleep(100);
        }
    }
static void SendMessage3(string server, string message)
{
    // create the udp socket
    UdpClient u = new UdpClient();

    byte[] sendBytes = Encoding.ASCII.GetBytes(message);

    // send the message
    // the destination is defined by the server name and port
    u.BeginSend(sendBytes, sendBytes.Length, server, s_listenPort, new AsyncCallback(SendCallback), u);

    // Do some work while we wait for the send to complete. For this example, we'll just sleep
    while (!messageSent)
    {
        Thread.Sleep(100);
    }
}

Poznámky

Asynchronní BeginSend operace musí být dokončena voláním EndSend metody . Obvykle je metoda vyvolána delegátem requestCallback .

Tato metoda neblokuje, dokud operace není dokončena. Chcete-li blokovat, dokud se operace dokončí, použijte jedno z Send přetížení metody.

Podrobné informace o použití asynchronního programovacího modelu najdete v tématu Asynchronní volání synchronních metod.

Platí pro

BeginSend(Byte[], Int32, IPEndPoint, AsyncCallback, Object)

Zdroj:
UDPClient.cs
Zdroj:
UDPClient.cs
Zdroj:
UDPClient.cs

Odešle datagram do cíle asynchronně. Cíl je určen parametrem EndPoint.

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ datagram, int bytes, System::Net::IPEndPoint ^ endPoint, AsyncCallback ^ requestCallback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] datagram, int bytes, System.Net.IPEndPoint? endPoint, AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginSend (byte[] datagram, int bytes, System.Net.IPEndPoint endPoint, AsyncCallback requestCallback, object state);
member this.BeginSend : byte[] * int * System.Net.IPEndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (datagram As Byte(), bytes As Integer, endPoint As IPEndPoint, requestCallback As AsyncCallback, state As Object) As IAsyncResult

Parametry

datagram
Byte[]

Pole Byte obsahující data, která mají být odeslána.

bytes
Int32

Počet bajtů k odeslání.

endPoint
IPEndPoint

Hodnota EndPoint , která představuje cíl dat.

requestCallback
AsyncCallback

Delegát AsyncCallback , který odkazuje na metodu vyvolání po dokončení operace.

state
Object

Uživatelem definovaný objekt, který obsahuje informace o operaci odeslání. Tento objekt je po dokončení operace předán requestCallback delegátu.

Návraty

Objekt IAsyncResult , který odkazuje na asynchronní odesílání.

Příklady

Následující příklad kódu používá BeginSend k asynchronnímu odeslání požadavku serveru.

public:
    static bool isMessageSent;

    static void SendCallback(IAsyncResult^ asyncResult)
    {
        UdpClient^ udpClient = (UdpClient^)asyncResult->AsyncState;

        Console::WriteLine("number of bytes sent: {0}",
            udpClient->EndSend(asyncResult));
        isMessageSent = true;
    }
public static bool messageSent = false;

public static void SendCallback(IAsyncResult ar)
{
    UdpClient u = (UdpClient)ar.AsyncState;

    Console.WriteLine($"number of bytes sent: {u.EndSend(ar)}");
    messageSent = true;
}
public:
    static void SendMessage2(String^ server, String^ message)
    {
        // create the udp socket
        UdpClient^ udpClient = gcnew UdpClient();
        array<Byte>^ sendBytes = Encoding::ASCII->GetBytes(message);

        // resolve the server name
        IPHostEntry^ resolvedServer = Dns::GetHostEntry(server);

        IPEndPoint^ ipEndPoint =
            gcnew IPEndPoint(resolvedServer->AddressList[0], listenPort);

        // send the message
        // the destination is defined by the IPEndPoint
        udpClient->BeginSend(sendBytes, sendBytes->Length, ipEndPoint,
            gcnew AsyncCallback(SendCallback), udpClient);

        // Do some work while we wait for the send to complete. For
        // this example, we'll just sleep
        while (!isMessageSent)
        {
            Thread::Sleep(100);
        }
    }
static void SendMessage2(string server, string message)
{
    // create the udp socket
    UdpClient u = new UdpClient();
    byte[] sendBytes = Encoding.ASCII.GetBytes(message);

    // resolve the server name
    IPHostEntry heserver = Dns.GetHostEntry(server);

    IPEndPoint e = new IPEndPoint(heserver.AddressList[0], s_listenPort);

    // send the message
    // the destination is defined by the IPEndPoint
    u.BeginSend(sendBytes, sendBytes.Length, e, new AsyncCallback(SendCallback), u);

    // Do some work while we wait for the send to complete. For this example, we'll just sleep
    while (!messageSent)
    {
        Thread.Sleep(100);
    }
}

Poznámky

Asynchronní BeginSend operace musí být dokončena voláním EndSend metody . Obvykle je metoda vyvolána delegátem requestCallback .

Tato metoda neblokuje, dokud operace není dokončena. Chcete-li blokovat, dokud se operace dokončí, použijte jedno z Send přetížení metody.

Podrobné informace o použití asynchronního programovacího modelu najdete v tématu Asynchronní volání synchronních metod.

Platí pro

BeginSend(Byte[], Int32, AsyncCallback, Object)

Zdroj:
UDPClient.cs
Zdroj:
UDPClient.cs
Zdroj:
UDPClient.cs

Odešle datagram vzdálenému hostiteli asynchronně. Cíl byl dříve určen voláním Connectmetody .

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ datagram, int bytes, AsyncCallback ^ requestCallback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] datagram, int bytes, AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginSend (byte[] datagram, int bytes, AsyncCallback requestCallback, object state);
member this.BeginSend : byte[] * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (datagram As Byte(), bytes As Integer, requestCallback As AsyncCallback, state As Object) As IAsyncResult

Parametry

datagram
Byte[]

Pole Byte obsahující data, která mají být odeslána.

bytes
Int32

Počet bajtů k odeslání.

requestCallback
AsyncCallback

Delegát AsyncCallback , který odkazuje na metodu vyvolání po dokončení operace.

state
Object

Uživatelem definovaný objekt, který obsahuje informace o operaci odeslání. Tento objekt je po dokončení operace předán requestCallback delegátu.

Návraty

Objekt IAsyncResult , který odkazuje na asynchronní odesílání.

Příklady

Následující příklad kódu používá BeginSend k asynchronnímu odeslání požadavku serveru.

public:
    static bool isMessageSent;

    static void SendCallback(IAsyncResult^ asyncResult)
    {
        UdpClient^ udpClient = (UdpClient^)asyncResult->AsyncState;

        Console::WriteLine("number of bytes sent: {0}",
            udpClient->EndSend(asyncResult));
        isMessageSent = true;
    }
public static bool messageSent = false;

public static void SendCallback(IAsyncResult ar)
{
    UdpClient u = (UdpClient)ar.AsyncState;

    Console.WriteLine($"number of bytes sent: {u.EndSend(ar)}");
    messageSent = true;
}
public:
    static void SendMessage1(String^ server, String^ message)
    {
        // create the udp socket
        UdpClient^ udpClient = gcnew UdpClient();

        udpClient->Connect(server, listenPort);
        array<Byte>^ sendBytes = Encoding::ASCII->GetBytes(message);

        // send the message
        // the destination is defined by the call to .Connect()
        udpClient->BeginSend(sendBytes, sendBytes->Length,
            gcnew AsyncCallback(SendCallback), udpClient);

        // Do some work while we wait for the send to complete. For
        // this example, we'll just sleep
        while (!isMessageSent)
        {
            Thread::Sleep(100);
        }
    }
static void SendMessage1(string server, string message)
{
    // create the udp socket
    UdpClient u = new UdpClient();

    u.Connect(server, s_listenPort);
    byte[] sendBytes = Encoding.ASCII.GetBytes(message);

    // send the message
    // the destination is defined by the call to .Connect()
    u.BeginSend(sendBytes, sendBytes.Length, new AsyncCallback(SendCallback), u);

    // Do some work while we wait for the send to complete. For this example, we'll just sleep
    while (!messageSent)
    {
        Thread.Sleep(100);
    }
}

Poznámky

Asynchronní BeginSend operace musí být dokončena voláním EndSend metody . Obvykle je metoda vyvolána delegátem requestCallback .

Tato metoda neblokuje, dokud se operace nedokoní. Chcete-li blokovat, dokud se operace dokončí, použijte jedno z Send přetížení metody.

Podrobné informace o použití asynchronního programovacího modelu najdete v tématu Asynchronní volání synchronních metod.

Platí pro