Socket.ConnectAsync メソッド

定義

リモート ホストに接続する非同期要求を開始します。Begins an asynchronous request for a connection to a remote host.

オーバーロード

ConnectAsync(SocketAsyncEventArgs)

リモート ホストに接続する非同期要求を開始します。Begins an asynchronous request for a connection to a remote host.

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

リモート ホストに接続する非同期要求を開始します。Begins an asynchronous request for a connection to a remote host.

ConnectAsync(SocketAsyncEventArgs)

リモート ホストに接続する非同期要求を開始します。Begins an asynchronous request for a connection to a remote host.

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

パラメーター

e
SocketAsyncEventArgs

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

戻り値

Boolean

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.

例外

引数が有効ではありません。An argument is not valid. この例外は、複数のバッファーが指定されているときに、BufferList プロパティが null 値ではない場合に発生します。This exception occurs if multiple buffers are specified, the BufferList property is not null.

e パラメーターおよび RemoteEndPoint を null 値にすることはできません。The e parameter cannot be null and the RemoteEndPoint cannot be null.

Socket がリッスンしているか、e パラメーターで指定されている SocketAsyncEventArgs オブジェクトを使用してソケット操作が既に進行していました。The Socket is listening or a socket operation was already in progress using the SocketAsyncEventArgs object specified in the e parameter.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

このメソッドには Windows XP 以降が必要です。Windows XP or later is required for this method. この例外は、ローカル エンドポイントと RemoteEndPoint が同じアドレス ファミリではない場合にも発生します。This exception also occurs if the local endpoint and the RemoteEndPoint are not the same address family.

Socket が閉じられました。The Socket has been closed.

呼び出し履歴の上位にある呼び出し元には、要求された操作に対するアクセス許可がありません。A caller higher in the call stack does not have permission for the requested operation.

注釈

接続指向プロトコルを使用している場合、メソッドは、 ConnectAsync リモートホストへの接続に対する非同期要求を開始します。If you are using a connection-oriented protocol, the ConnectAsync method starts an asynchronous request for a connection to the remote host. コネクションレスプロトコルを使用している場合は、によって ConnectAsync 既定のリモートホストが確立されます。If you are using a connectionless protocol, ConnectAsync establishes a default remote host.

完了が通知されるようにするには、EventHandler デリゲートを実装するコールバックメソッドを作成し、その <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.

呼び出し元は、接続先の SocketAsyncEventArgs.RemoteEndPoint リモートホストのにプロパティを設定する必要があり IPEndPoint ます。The caller must set the SocketAsyncEventArgs.RemoteEndPoint property to the IPEndPoint of the remote host to connect to.

呼び出し元は、 SocketAsyncEventArgs.UserToken メソッドを呼び出す前に、プロパティを任意のユーザー状態オブジェクトに設定できます。これにより、 ConnectAsync コールバックメソッドで情報を取得できるようになります。The caller may set the SocketAsyncEventArgs.UserToken property to any user state object desired before calling the ConnectAsync 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.

UDP などのコネクションレスプロトコルを使用している場合は、データを送受信する前にを呼び出す必要はありません ConnectAsyncIf you are using a connectionless protocol such as UDP, you do not have to call ConnectAsync before sending and receiving data. およびを使用 SendToAsyncReceiveFromAsync て、リモートホストと通信することができます。You can use SendToAsync and ReceiveFromAsync to communicate with a remote host. を呼び出すと ConnectAsync 、指定された既定以外のアドレスから到着したデータグラムはすべて破棄されます。If you do call ConnectAsync, any datagrams that arrive from an address other than the specified default will be discarded. 既定のリモートホストを変更する場合は、目的の ConnectAsync エンドポイントを使用してメソッドを再度呼び出します。If you want to change the default remote host, call the ConnectAsync method again with the desired endpoint.

既定のリモートホストをブロードキャストアドレスに設定する場合は、まずを呼び出し、 SetSocketOption にブロードキャストを設定する必要があり true ます。If you wish to set the default remote host to a broadcast address, you must first call SetSocketOption and set Broadcast to true. この処理が行われない場合、 ConnectAsync メソッドはをスロー SocketException します。If this is not done, the ConnectAsync method will throw a SocketException.

オブジェクトの次のプロパティとイベントが System.Net.Sockets.SocketAsyncEventArgs 必要です。The following properties and events on the System.Net.Sockets.SocketAsyncEventArgs object are required:

必要に応じて、メソッドが成功した後に、ソケットでアトミックに送信されるバッファーを指定することもでき ConnectAsync ます。Optionally, a buffer may be provided which will atomically be sent on the socket after the ConnectAsync method succeeds. この場合、プロパティは、 SocketAsyncEventArgs.Buffer 送信するデータを格納するバッファーに設定する必要があります。また、プロパティは、 SocketAsyncEventArgs.Count バッファーから送信するデータのバイト数に設定する必要があります。In this case, the SocketAsyncEventArgs.Buffer property needs to be set to the buffer containing the data to send and the SocketAsyncEventArgs.Count property needs to be set to the number of bytes of data to send from the buffer. 接続が確立されると、このバッファーのデータが送信されます。Once a connection is established, this buffer of data is sent.

接続指向プロトコルを使用していて Bind 、を呼び出す前にを呼び出さない場合 ConnectAsync 、基になるサービスプロバイダーによって、最も適切なローカルネットワークアドレスとポート番号が割り当てられます。If you are using a connection-oriented protocol and do not call Bind before calling ConnectAsync, the underlying service provider will assign the most appropriate local network address and port number.

コネクションレスプロトコルを使用している場合、サービスプロバイダーは、 SendAsync メソッドまたはメソッドを呼び出すまで、ローカルネットワークの IP アドレスとポート番号を割り当てません ReceiveAsyncIf you are using a connectionless protocol, the service provider will not assign a local network IP address and port number until you call the SendAsync or ReceiveAsync methods.

ConnectAsync NotSupportedException とのアドレスファミリ Socket SocketAsyncEventArgs.RemoteEndPoint が同じアドレスファミリでない場合、メソッドはをスローします。The ConnectAsync method throws NotSupportedException if the address family of the Socket and the SocketAsyncEventArgs.RemoteEndPoint are not the same address family.

注意

このメソッドの呼び出し時にを受け取った場合は、プロパティを使用して SocketException SocketException.ErrorCode 特定のエラーコードを取得します。If you receive a SocketException when calling this method, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコード のドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

こちらもご覧ください

適用対象

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

リモート ホストに接続する非同期要求を開始します。Begins an asynchronous request for a connection to a remote host.

public:
 static bool ConnectAsync(System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType, System::Net::Sockets::SocketAsyncEventArgs ^ e);
public static bool ConnectAsync (System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType, System.Net.Sockets.SocketAsyncEventArgs e);
static member ConnectAsync : System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType * System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Shared Function ConnectAsync (socketType As SocketType, protocolType As ProtocolType, e As SocketAsyncEventArgs) As Boolean

パラメーター

socketType
SocketType

SocketType 値のいずれか 1 つ。One of the SocketType values.

protocolType
ProtocolType

ProtocolType 値のいずれか 1 つ。One of the ProtocolType values.

e
SocketAsyncEventArgs

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

戻り値

Boolean

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.

例外

引数が有効ではありません。An argument is not valid. この例外は、複数のバッファーが指定されているときに、BufferList プロパティが null 値ではない場合に発生します。This exception occurs if multiple buffers are specified, the BufferList property is not null.

e パラメーターおよび RemoteEndPoint を null 値にすることはできません。The e parameter cannot be null and the RemoteEndPoint cannot be null.

Socket がリッスンしているか、e パラメーターで指定されている SocketAsyncEventArgs オブジェクトを使用してソケット操作が既に進行していました。The Socket is listening or a socket operation was already in progress using the SocketAsyncEventArgs object specified in the e parameter.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

このメソッドには Windows XP 以降が必要です。Windows XP or later is required for this method. この例外は、ローカル エンドポイントと RemoteEndPoint が同じアドレス ファミリではない場合にも発生します。This exception also occurs if the local endpoint and the RemoteEndPoint are not the same address family.

Socket が閉じられました。The Socket has been closed.

呼び出し履歴の上位にある呼び出し元には、要求された操作に対するアクセス許可がありません。A caller higher in the call stack does not have permission for the requested operation.

注釈

接続指向プロトコルを使用している場合は、M:System.Net.Sockets.Socket.ConnectAsync (SocketAsyncEventArgs) メソッドによって、リモートホストへの接続に対する非同期要求が開始されていることが確認されています。If you are using a connection-oriented protocol, the M:System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.SocketAsyncEventArgs) method starts an asynchronous request for a connection to the remote host. コネクションレスプロトコルを使用している場合、は、 ConnectAsync パラメーターとパラメーターで指定された既定のリモートホストを確立し socketType protocolType ます。If you are using a connectionless protocol, ConnectAsync establishes a default remote host specified by the socketType and protocolType parameters.

完了が通知されるようにするには、EventHandler デリゲートを実装するコールバックメソッドを作成し、その <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.

呼び出し元は、接続先の SocketAsyncEventArgs.RemoteEndPoint リモートホストのにプロパティを設定する必要があり IPEndPoint ます。The caller must set the SocketAsyncEventArgs.RemoteEndPoint property to the IPEndPoint of the remote host to connect to.

呼び出し元は、 SocketAsyncEventArgs.UserToken メソッドを呼び出す前に、プロパティを任意のユーザー状態オブジェクトに設定できます。これにより、 ConnectAsync コールバックメソッドで情報を取得できるようになります。The caller may set the SocketAsyncEventArgs.UserToken property to any user state object desired before calling the ConnectAsync 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.

UDP などのコネクションレスプロトコルを使用している場合は、データを送受信する前にを呼び出す必要はありません ConnectAsyncIf you are using a connectionless protocol such as UDP, you do not have to call ConnectAsync before sending and receiving data. およびを使用 SendToAsyncReceiveFromAsync て、リモートホストと通信することができます。You can use SendToAsync and ReceiveFromAsync to communicate with a remote host. を呼び出すと ConnectAsync 、指定された既定以外のアドレスから到着したデータグラムはすべて破棄されます。If you do call ConnectAsync, any datagrams that arrive from an address other than the specified default will be discarded. 既定のリモートホストを変更する場合は、目的の ConnectAsync エンドポイントを使用してメソッドを再度呼び出します。If you want to change the default remote host, call the ConnectAsync method again with the desired endpoint.

既定のリモートホストをブロードキャストアドレスに設定する場合は、まずを呼び出し、 SetSocketOption にブロードキャストを設定する必要があり true ます。If you wish to set the default remote host to a broadcast address, you must first call SetSocketOption and set Broadcast to true. この処理が行われない場合、 ConnectAsync メソッドはをスロー SocketException します。If this is not done, the ConnectAsync method will throw a SocketException.

オブジェクトの次のプロパティとイベントが System.Net.Sockets.SocketAsyncEventArgs 必要です。The following properties and events on the System.Net.Sockets.SocketAsyncEventArgs object are required:

必要に応じて、メソッドが成功した後に、ソケットでアトミックに送信されるバッファーを指定することもでき ConnectAsync ます。Optionally, a buffer may be provided which will atomically be sent on the socket after the ConnectAsync method succeeds. この場合、プロパティは、 SocketAsyncEventArgs.Buffer 送信するデータを格納するバッファーに設定する必要があります。また、プロパティは、 SocketAsyncEventArgs.Count バッファーから送信するデータのバイト数に設定する必要があります。In this case, the SocketAsyncEventArgs.Buffer property needs to be set to the buffer containing the data to send and the SocketAsyncEventArgs.Count property needs to be set to the number of bytes of data to send from the buffer. 接続が確立されると、このバッファーのデータが送信されます。Once a connection is established, this buffer of data is sent.

接続指向プロトコルを使用していて Bind 、を呼び出す前にを呼び出さない場合 ConnectAsync 、基になるサービスプロバイダーによって、最も適切なローカルネットワークアドレスとポート番号が割り当てられます。If you are using a connection-oriented protocol and do not call Bind before calling ConnectAsync, the underlying service provider will assign the most appropriate local network address and port number.

コネクションレスプロトコルを使用している場合、サービスプロバイダーは、 SendAsync メソッドまたはメソッドを呼び出すまで、ローカルネットワークの IP アドレスとポート番号を割り当てません ReceiveAsyncIf you are using a connectionless protocol, the service provider will not assign a local network IP address and port number until you call the SendAsync or ReceiveAsync methods.

ConnectAsync NotSupportedException とのアドレスファミリ Socket SocketAsyncEventArgs.RemoteEndPoint が同じアドレスファミリでない場合、メソッドはをスローします。The ConnectAsync method throws NotSupportedException if the address family of the Socket and the SocketAsyncEventArgs.RemoteEndPoint are not the same address family.

注意

このメソッドの呼び出し時にを受け取った場合は、プロパティを使用して SocketException SocketException.ErrorCode 特定のエラーコードを取得します。If you receive a SocketException when calling this method, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコード のドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

適用対象