Socket.SendToAsync(SocketAsyncEventArgs) Socket.SendToAsync(SocketAsyncEventArgs) Socket.SendToAsync(SocketAsyncEventArgs) Socket.SendToAsync(SocketAsyncEventArgs) Method

定義

特定のリモート ホストにデータを非同期的に送信します。Sends data asynchronously to a specific remote host.

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 SocketAsyncEventArgs SocketAsyncEventArgs

この非同期ソケット操作に使用する SocketAsyncEventArgs オブジェクト。The SocketAsyncEventArgs object to use for this asynchronous socket operation.

戻り値

I/O 操作が保留中の場合は truetrue if the I/O operation is pending. 操作の完了時に、e パラメーターの Completed イベントが発生します。The Completed event on the e parameter will be raised upon completion of the operation.

I/O 操作が同期的に完了した場合は falsefalse if the I/O operation completed synchronously. この場合、e パラメーターの Completed イベントは発生しません。メソッド呼び出しから制御が戻った直後に、パラメーターとして渡された e オブジェクトを調べて操作の結果を取得できます。In this case, The Completed event on the e parameter will not be raised and the e object passed as a parameter may be examined immediately after the method call returns to retrieve the result of the operation.

例外

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

e パラメーターに指定された SocketAsyncEventArgs オブジェクトを使用してソケット操作が既に進行していました。A socket operation was already in progress using the SocketAsyncEventArgs object specified in the e parameter.

このメソッドには Windows XP 以降が必要です。Windows XP or later is required for this method.

指定されたプロトコルは接続指向ですが、Socket がまだ接続されていません。The protocol specified is connection-oriented, but the Socket is not yet connected.

注釈

SendToAsyncメソッドで指定されたリモート ホストへの非同期送信操作を開始、SocketAsyncEventArgs.RemoteEndPointのプロパティ、eパラメーター。The SendToAsync method starts an asynchronous send operation to the remote host specified in the SocketAsyncEventArgs.RemoteEndPoint property of the e parameter. 呼び出す、SendToAsyncメソッドを使用すると、個別の実行スレッド内でデータを送信できます。Calling the SendToAsync method gives you the ability to send data within a separate execution thread. コネクションレス プロトコルは、このメソッドが意図したものがSendToAsyncコネクションレス型との接続指向の両方のプロトコルで動作します。Although this method is intended for connectionless protocols, SendToAsync works with both connectionless and connection-oriented protocols.

完了の通知、イベント ハンドラーを実装するコールバック メソッドを作成する必要があります<SocketAsyncEventArgs > デリゲートおよびコールバックをアタッチ、SocketAsyncEventArgs.Completedイベント。To be notified of completion, you must create a callback method that implements the EventHandler<SocketAsyncEventArgs> delegate and attach the callback to the SocketAsyncEventArgs.Completed event.

次のプロパティとイベントをSystem.Net.Sockets.SocketAsyncEventArgsオブジェクトを正常にこのメソッドを呼び出す必要は。The following properties and events on the System.Net.Sockets.SocketAsyncEventArgs object are required to successfully call this method:

呼び出し元の設定、SocketAsyncEventArgs.UserTokenを呼び出す前に必要なすべてのユーザー状態オブジェクトのプロパティ、SendToAsyncメソッド情報をコールバック メソッドで取得できるようにします。The caller may set the SocketAsyncEventArgs.UserToken property to any user state object desired before calling the SendToAsync method, so that the information will be retrievable in the callback method. コールバックは、1 つのオブジェクトより多くの情報を必要とする場合は、メンバーとして他の必要な状態情報を保持する小さなクラスを作成できます。If the callback needs more information than a single object, a small class can be created to hold the other required state information as members.

最初に呼び出す必要がある接続指向プロトコルを使用している場合、 AcceptAcceptAsyncBeginAcceptBeginConnectConnect、またはConnectAsyncメソッド。If you are using a connection-oriented protocol, you must first call the Accept, AcceptAsync, BeginAccept, BeginConnect, Connect, or ConnectAsync method. それ以外の場合SendToAsyncがスローされます、SocketExceptionします。Otherwise SendToAsync will throw a SocketException. 接続指向プロトコルでは、使用する場合、SendToAsyncメソッドは無視されます、SocketAsyncEventArgs.RemoteEndPointプロパティと送信のデータをSystem.Net.EndPointで確立されている、 AcceptAcceptAsyncBeginAcceptBeginConnectConnect、またはConnectAsyncメソッド。When using a connection-oriented protocol, the SendToAsync method will ignore the SocketAsyncEventArgs.RemoteEndPoint property and send data to the System.Net.EndPoint established in the Accept, AcceptAsync, BeginAccept, BeginConnect, Connect, or ConnectAsync method.

コネクションレスのプロトコルを使用している場合はで、既定のリモート ホストを確立する必要はありません、 BeginConnectConnect、またはConnectAsyncメソッドを呼び出す前にSendToAsyncします。If you are using a connectionless protocol, you do not need to establish a default remote host with the BeginConnect, Connect, or ConnectAsync method prior to calling SendToAsync. これを呼び出す場合にのみ必要があります、BeginSendまたはSendAsyncメソッド。You only need to do this if you intend to call the BeginSend or SendAsync methods. 呼び出す場合、 BeginConnectConnect、またはConnectAsyncメソッドを呼び出す前にSendToAsyncSocketAsyncEventArgs.RemoteEndPointプロパティは、操作のみを送信する指定された既定のリモート ホストに上書きされます。If you do call the BeginConnect, Connect, or ConnectAsync method prior to calling SendToAsync, the SocketAsyncEventArgs.RemoteEndPoint property will override the specified default remote host for that send operation only. また必要はありませんを呼び出す、Bindメソッド。You are also not required to call the Bind method. この場合は、基になるサービス プロバイダーは、最も適切なローカル ネットワーク IP アドレスとポート番号を割り当てられます。In this case, the underlying service provider will assign the most appropriate local network IP address and port number. 基になるサービス プロバイダーは、空いているポートを選択する場合は、0 のポート番号を使用します。Use a port number of zero if you want the underlying service provider to select a free port. 使用することが割り当てられているローカル ネットワークの IP アドレスとポート番号を識別する必要がある場合、LocalEndPointプロパティの後、SocketAsyncEventArgs.Completedイベントがシグナル状態し、関連付けられているデリゲートが呼び出されます。If you need to identify the assigned local network IP address and port number, you can use the LocalEndPoint property after the SocketAsyncEventArgs.Completed event is signaled and the associated delegates are called.

最初に呼び出す必要がある場合は、ブロードキャスト アドレスにデータを送信する、SetSocketOptionメソッドと set ソケット オプションSocketOptionName.Broadcastを true にします。If you want to send data to a broadcast address, you must first call the SetSocketOption method and set the socket option for SocketOptionName.Broadcast to true. バッファーのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えていないことを確認するもあります。You must also be sure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. 場合は、データグラムが送信されずSendToAsyncがスローされます、SocketExceptionします。If it does, the datagram will not be sent and SendToAsync will throw a SocketException.

DontRoute フラグを指定する場合、SocketAsyncEventArgs.SocketFlagsプロパティ、ルーティングされていないに送信するデータ。If you specify the DontRoute flag in the SocketAsyncEventArgs.SocketFlags property, the data you are sending will not be routed.

メッセージ指向のソケットでは、基になるトランスポートのメッセージの最大サイズを超えないように注意する必要があります。For message-oriented sockets, care must be taken not to exceed the maximum message size of the underlying transport. バッファーのサイズでは、基になるサービス プロバイダーの最大パケット サイズを超えている場合、データグラムが送信されず、SendToAsyncがスローされます、SocketExceptionします。If the size of the buffer exceeds the maximum packet size of the underlying service provider, the datagram is not sent and SendToAsync will throw a SocketException. 正常に完了、SendToAsyncメソッドは、データが正常に配信されたことを示していません。The successful completion of a SendToAsync method does not indicate that the data was successfully delivered.

適用対象

こちらもご覧ください