Поделиться через


UdpClient.BeginSend Метод

Определение

Отправляет датаграмму на удаленный узел в асинхронном режиме.

Перегрузки

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

Отправляет датаграмму в пункт назначения в асинхронном режиме. Пункт назначения задается именем узла и номером порта.

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

Отправляет датаграмму в пункт назначения в асинхронном режиме. Пункт назначения задается объектом EndPoint.

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

Отправляет датаграмму на удаленный узел в асинхронном режиме. Пункт назначения был задан заранее путем обращения к объекту Connect.

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

Исходный код:
UDPClient.cs
Исходный код:
UDPClient.cs
Исходный код:
UDPClient.cs

Отправляет датаграмму в пункт назначения в асинхронном режиме. Пункт назначения задается именем узла и номером порта.

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

Параметры

datagram
Byte[]

Массив Byte, содержащий отправляемые данные.

bytes
Int32

Количество байтов для отправки.

hostname
String

узел назначения.

port
Int32

Номер порта узла назначения.

requestCallback
AsyncCallback

Делегат AsyncCallback, ссылающийся на метод, вызываемый по завершении данной операции.

state
Object

Пользовательский объект, содержащий информацию об операции отправки. Этот объект передается делегату requestCallback по завершении операции.

Возвращаемое значение

Объект IAsyncResult, который ссылается на асинхронную отправку.

Примеры

В следующем примере кода используется BeginSend для асинхронной отправки серверного запроса.

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

Комментарии

Асинхронная BeginSend операция должна быть завершена путем вызова EndSend метода . Как правило, метод вызывается делегатом requestCallback .

Этот метод не блокируется до завершения операции. Чтобы заблокировать до завершения операции, используйте одну из Send перегрузок метода.

Подробные сведения об использовании асинхронной модели программирования см. в разделе Асинхронный вызов синхронных методов.

Применяется к

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

Исходный код:
UDPClient.cs
Исходный код:
UDPClient.cs
Исходный код:
UDPClient.cs

Отправляет датаграмму в пункт назначения в асинхронном режиме. Пункт назначения задается объектом 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

Параметры

datagram
Byte[]

Массив Byte, содержащий отправляемые данные.

bytes
Int32

Количество байтов для отправки.

endPoint
IPEndPoint

Объект EndPoint, представляющий пункт назначения для данных.

requestCallback
AsyncCallback

Делегат AsyncCallback, ссылающийся на метод, вызываемый по завершении данной операции.

state
Object

Пользовательский объект, содержащий информацию об операции отправки. Этот объект передается делегату requestCallback по завершении операции.

Возвращаемое значение

Объект IAsyncResult, который ссылается на асинхронную отправку.

Примеры

В следующем примере кода используется BeginSend для асинхронной отправки серверного запроса.

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

Комментарии

Асинхронная BeginSend операция должна быть завершена путем вызова EndSend метода . Как правило, метод вызывается делегатом requestCallback .

Этот метод не блокируется до завершения операции. Чтобы заблокировать до завершения операции, используйте одну из Send перегрузок метода.

Подробные сведения об использовании асинхронной модели программирования см. в разделе Асинхронный вызов синхронных методов.

Применяется к

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

Исходный код:
UDPClient.cs
Исходный код:
UDPClient.cs
Исходный код:
UDPClient.cs

Отправляет датаграмму на удаленный узел в асинхронном режиме. Пункт назначения был задан заранее путем обращения к объекту Connect.

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

Параметры

datagram
Byte[]

Массив Byte, содержащий отправляемые данные.

bytes
Int32

Количество байтов для отправки.

requestCallback
AsyncCallback

Делегат AsyncCallback, ссылающийся на метод, вызываемый по завершении данной операции.

state
Object

Пользовательский объект, содержащий информацию об операции отправки. Этот объект передается делегату requestCallback по завершении операции.

Возвращаемое значение

Объект IAsyncResult, который ссылается на асинхронную отправку.

Примеры

В следующем примере кода используется BeginSend для асинхронной отправки серверного запроса.

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

Комментарии

Асинхронная BeginSend операция должна быть завершена путем вызова EndSend метода . Как правило, метод вызывается делегатом requestCallback .

Этот метод не блокируется до завершения операции. Чтобы заблокировать до завершения операции, используйте одну из Send перегрузок метода.

Подробные сведения об использовании асинхронной модели программирования см. в разделе Асинхронный вызов синхронных методов.

Применяется к