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.

戻り値

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 > delegate を実装するコールバックメソッドを作成し、コールバックを 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.

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

呼び出し元は、ConnectAsync メソッドを呼び出す前に、SocketAsyncEventArgs.UserToken プロパティを任意のユーザー状態オブジェクトに設定して、コールバックメソッドで情報を取得できるようにすることができます。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 などのコネクションレスプロトコルを使用している場合は、データを送受信する前に ConnectAsync を呼び出す必要はありません。If 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.

接続指向プロトコルを使用していて、ConnectAsyncを呼び出す前に Bind を呼び出さない場合は、基になるサービスプロバイダーによって、最も適切なローカルネットワークアドレスとポート番号が割り当てられます。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 または ReceiveAsync メソッドを呼び出すまで、ローカルネットワークの IP アドレスとポート番号を割り当てません。If 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 メソッドは、Socket のアドレスファミリと SocketAsyncEventArgs.RemoteEndPoint が同じアドレスファミリでない場合に NotSupportedException をスローします。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

パラメーター

socketType
SocketType

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

protocolType
ProtocolType

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

e
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.

例外

引数が有効ではありません。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 > delegate を実装するコールバックメソッドを作成し、コールバックを 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.

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

呼び出し元は、ConnectAsync メソッドを呼び出す前に、SocketAsyncEventArgs.UserToken プロパティを任意のユーザー状態オブジェクトに設定して、コールバックメソッドで情報を取得できるようにすることができます。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 などのコネクションレスプロトコルを使用している場合は、データを送受信する前に ConnectAsync を呼び出す必要はありません。If 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.

接続指向プロトコルを使用していて、ConnectAsyncを呼び出す前に Bind を呼び出さない場合は、基になるサービスプロバイダーによって、最も適切なローカルネットワークアドレスとポート番号が割り当てられます。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 または ReceiveAsync メソッドを呼び出すまで、ローカルネットワークの IP アドレスとポート番号を割り当てません。If 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 メソッドは、Socket のアドレスファミリと SocketAsyncEventArgs.RemoteEndPoint が同じアドレスファミリでない場合に NotSupportedException をスローします。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.

適用対象