次の方法で共有


Socket.BeginSendTo メソッド

定義

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

public:
 IAsyncResult ^ BeginSendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendTo (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginSendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

パラメーター

buffer
Byte[]

送信するデータを格納する Byte 型の配列。

offset
Int32

データ送信を開始する、buffer 内の、インデックス番号が 0 から始まる位置。

size
Int32

送信するバイト数。

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。

remoteEP
EndPoint

リモート デバイスを表す EndPoint

callback
AsyncCallback

AsyncCallback デリゲート。

state
Object

この要求の状態情報を格納するオブジェクト。

戻り値

非同期の送信を参照する IAsyncResult

例外

buffernull です。

または

remoteEPnull です。

.NET Framework および .NET 5 以前のみ: ソケットにアクセスしようとしたときにエラーが発生しました。

offset が 0 未満です。

または

offsetbuffer の長さを超えています。

または

size が 0 未満です。

- または -

size が、 buffer の長さから offset パラメーターの値を引いた値を超えています。

Socket が閉じられました。

呼び出し履歴の上位にある呼び出し元には、要求された操作に対するアクセス許可がありません。

注釈

重要

これは互換性 API です。 新しい開発に APM (Begin* および End*) メソッドを使用することはお勧めしません。 代わりに、 ベースの Task同等のものを使用してください。

を実装AsyncCallbackBeginSendToするコールバックを渡して、操作の完了に関する通知を受け取ることができます。 基になるネットワーク スタックが同期的に操作を完了すると、 への呼び出し BeginSendTo中にコールバックがインラインで実行されることに注意してください。 この場合、 CompletedSynchronously 返される IAsyncResult の プロパティは に true 設定され、メソッドが同期的に完了したことを示します。 メソッドに AsyncState 渡される状態オブジェクトを取得するには、 の プロパティ IAsyncResultBeginSendTo 使用します。

メソッドを BeginSendTo 呼び出して操作を完了する EndSendTo 必要があります。 通常、 メソッドは、指定 AsyncCallback されたデリゲートによって呼び出されます。 EndSendTo は、操作が完了するまで呼び出し元のスレッドをブロックします。

接続指向プロトコルを使用している場合は、最初に 、BeginConnectAccept、、または メソッドをConnect呼び出す必要があります。またはBeginAcceptBeginSendTo、 をスローSocketExceptionします。 BeginSendToは パラメーターをremoteEP無視し、、BeginConnectAccept、または メソッドで確立された にデータEndPointBeginAcceptConnect送信します。

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

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

パラメーターとして フラグをDontRoutesocketflags指定した場合、送信するデータはルーティングされません。

注意

を受け取った場合は SocketException、 プロパティを SocketException.ErrorCode 使用して特定のエラー コードを取得します。 このコードを取得したら、エラーの詳細な説明については、 Windows ソケット バージョン 2 API エラー コード のドキュメントを参照してください。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.NET Frameworkのネットワーク トレース」を参照してください。

注意

実行コンテキスト (セキュリティ コンテキスト、偽装されたユーザー、および呼び出し元のコンテキスト) は、非同期 Socket メソッド用にキャッシュされます。 特定のコンテキスト (特定の非同期 Socket メソッド、特定のインスタンス、および特定 Socket のコールバック) を最初に使用すると、そのコンテキストの後続の使用によってパフォーマンスが向上します。

適用対象

こちらもご覧ください