Socket.SendToAsync メソッド

定義

オーバーロード

SendToAsync(SocketAsyncEventArgs)

特定のリモート ホストにデータを非同期的に送信します。

SendToAsync(ArraySegment<Byte>, EndPoint)

指定したリモート ホストにデータを送信します。

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

指定したリモート ホストにデータを送信します。

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

指定したリモート ホストにデータを送信します。

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

指定したリモート ホストにデータを送信します。

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。

SendToAsync(SocketAsyncEventArgs)

特定のリモート ホストにデータを非同期的に送信します。

public:
 bool SendToAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendToAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendToAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendToAsync (e As SocketAsyncEventArgs) As Boolean

パラメーター

e
SocketAsyncEventArgs

この非同期ソケット操作に使用する SocketAsyncEventArgs オブジェクト。

戻り値

I/O 操作が保留中の場合は true。 操作の完了時に、e パラメーターの Completed イベントが発生します。

I/O 操作が同期的に完了した場合は false。 この場合、e パラメーターの Completed イベントは発生しません。メソッド呼び出しから制御が戻った直後に、パラメーターとして渡された e オブジェクトを調べて操作の結果を取得できます。

例外

RemoteEndPoint に null 値を指定することはできません。

e パラメーターに指定された SocketAsyncEventArgs オブジェクトを使用してソケット操作が既に進行していました。

Socket が閉じられました。

指定されたプロトコルは接続指向ですが、Socket がまだ接続されていません。

注釈

メソッドは SendToAsync 、 パラメーターの プロパティで SocketAsyncEventArgs.RemoteEndPoint 指定されたリモート ホストへの非同期送信操作を e 開始します。 メソッドを SendToAsync 呼び出すと、別の実行スレッド内でデータを送信できます。 このメソッドはコネクションレス プロトコルを対象としていますが、 SendToAsync コネクションレスプロトコルとコネクション指向プロトコルの両方で動作します。

完了を通知するには、EventHandler<SocketAsyncEventArgs> デリゲートを実装するコールバック メソッドを作成し、コールバックをイベントに SocketAsyncEventArgs.Completed アタッチする必要があります。

このメソッドを正常に呼び出すには、オブジェクトの System.Net.Sockets.SocketAsyncEventArgs 次のプロパティとイベントが必要です。

呼び出し元は、コールバック メソッドで情報を取得できるように、 メソッドをSendToAsync呼び出す前に必要な任意のユーザー状態オブジェクトに プロパティを設定SocketAsyncEventArgs.UserTokenできます。 コールバックで 1 つのオブジェクトよりも多くの情報が必要な場合は、他の必須状態情報をメンバーとして保持する小さなクラスを作成できます。

接続指向プロトコルを使用している場合は、まず、、AcceptAsync、、BeginConnectBeginAcceptConnectまたは ConnectAsync メソッドをAccept呼び出す必要があります。 それ以外の場合 SendToAsync は、 が SocketExceptionスローされます。 接続指向プロトコルを使用する場合、 SendToAsync メソッドは プロパティをSocketAsyncEventArgs.RemoteEndPoint無視し、、、BeginAcceptAcceptAsyncConnectBeginConnectまたは ConnectAsync メソッドでAccept確立された にデータSystem.Net.EndPointを送信します。

コネクションレス プロトコルを使用している場合は、 を呼び出すSendToAsync前に、、Connect、または ConnectAsync メソッドを使用して既定のBeginConnectリモート ホストを確立する必要はありません。 これは、 メソッドまたは SendAsync メソッドを呼び出BeginSendす場合にのみ必要です。 を呼び出す前に 、、または ConnectAsync メソッドを呼び出SocketAsyncEventArgs.RemoteEndPointBeginConnectSendToAsyncした場合、 プロパティは、その送信操作に対してのみ指定された既定のリモート ホストをオーバーライドします。 Connect また、 メソッドを呼び出す Bind 必要はありません。 この場合、基になるサービス プロバイダーは、最も適切なローカル ネットワーク IP アドレスとポート番号を割り当てます。 基になるサービス プロバイダーで空きポートを選択する場合は、ポート番号 0 を使用します。 割り当てられたローカル ネットワーク IP アドレスとポート番号を識別する必要がある場合は、イベントが通知され、関連付けられているデリゲートが呼び出された後SocketAsyncEventArgs.Completedに、 プロパティを使用LocalEndPointできます。

ブロードキャスト アドレスにデータを送信する場合は、まず メソッドを SetSocketOption 呼び出し、 のソケット オプション SocketOptionName.Broadcast を true に設定する必要があります。 また、バッファーのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えないようにする必要があります。 送信された場合、データグラムは送信されず、 SendToAsyncSocketExceptionスローされます。

プロパティに DontRoute フラグを SocketAsyncEventArgs.SocketFlags 指定した場合、送信するデータはルーティングされません。

メッセージ指向ソケットの場合は、基になるトランスポートの最大メッセージ サイズを超えないように注意する必要があります。 バッファーのサイズが基になるサービス プロバイダーの最大パケット サイズを超えた場合、データグラムは送信 SendToAsync されず、 SocketExceptionがスローされます。 メソッドが正常に完了しても、 SendToAsync データが正常に配信されたことは示されません。

こちらもご覧ください

適用対象

SendToAsync(ArraySegment<Byte>, EndPoint)

指定したリモート ホストにデータを送信します。

public:
 System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), remoteEP As EndPoint) As Task(Of Integer)

パラメーター

buffer
ArraySegment<Byte>

送信するデータのバッファー。

remoteEP
EndPoint

データの送信先となるリモート ホスト。

戻り値

送信されたバイト数で完了する非同期タスク。

例外

remoteEPnullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

適用対象

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

指定したリモート ホストにデータを送信します。

public:
 System::Threading::Tasks::Task<int> ^ SendToAsync(ArraySegment<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task<int> SendToAsync (ArraySegment<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendToAsync : ArraySegment<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> System.Threading.Tasks.Task<int>
Public Function SendToAsync (buffer As ArraySegment(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Task(Of Integer)

パラメーター

buffer
ArraySegment<Byte>

送信するデータのバッファー。

socketFlags
SocketFlags

データの送信時に使用される SocketFlags 値のビットごとの組み合わせ。

remoteEP
EndPoint

データの送信先となるリモート ホスト。

戻り値

送信されたバイト数で完了する非同期タスク。

例外

remoteEPnullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

適用対象

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

指定したリモート ホストにデータを送信します。

public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

パラメーター

buffer
ReadOnlyMemory<Byte>

送信するデータのバッファー。

remoteEP
EndPoint

データの送信先となるリモート ホスト。

cancellationToken
CancellationToken

非同期操作を取り消すために使用できるキャンセル トークン。

戻り値

送信されたバイト数で完了する非同期タスク。

例外

remoteEPnullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

キャンセル トークンが取り消されました。 この例外は、返されたタスクに格納されます。

適用対象

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

指定したリモート ホストにデータを送信します。

public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

パラメーター

buffer
ReadOnlyMemory<Byte>

送信するデータのバッファー。

socketFlags
SocketFlags

データの送信時に使用される SocketFlags 値のビットごとの組み合わせ。

remoteEP
EndPoint

データの送信先となるリモート ホスト。

cancellationToken
CancellationToken

非同期操作を取り消すために使用できるキャンセル トークン。

戻り値

送信されたバイト数で完了する非同期タスク。

例外

remoteEPnullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

キャンセル トークンが取り消されました。 この例外は、返されたタスクに格納されます。

適用対象

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

指定した SocketFlags を使用して、特定のエンドポイントにデータを送信します。

public System.Threading.Tasks.ValueTask<int> SendToAsync (ReadOnlyMemory<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress, System.Threading.CancellationToken cancellationToken = default);
member this.SendToAsync : ReadOnlyMemory<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask<int>
Public Function SendToAsync (buffer As ReadOnlyMemory(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress, Optional cancellationToken As CancellationToken = Nothing) As ValueTask(Of Integer)

パラメーター

buffer
ReadOnlyMemory<Byte>

送信するデータのバッファー。

socketFlags
SocketFlags

データの送信時に使用される値の SocketFlags ビットごとの組み合わせ。

socketAddress
SocketAddress

データの送信先を表す SocketAddress

cancellationToken
CancellationToken

非同期操作を取り消すために使用できるキャンセル トークン。

戻り値

送信されたバイト数で完了する非同期タスク。

例外

socketAddressnullです。

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

キャンセル トークンが取り消されました。 この例外は、返されたタスクに格納されます。

適用対象