Socket.ConnectAsync Socket.ConnectAsync Socket.ConnectAsync Socket.ConnectAsync Method

定義

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

オーバーロード

ConnectAsync(SocketAsyncEventArgs) ConnectAsync(SocketAsyncEventArgs) ConnectAsync(SocketAsyncEventArgs) ConnectAsync(SocketAsyncEventArgs)

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

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs) ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs) ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

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

ConnectAsync(SocketAsyncEventArgs) ConnectAsync(SocketAsyncEventArgs) ConnectAsync(SocketAsyncEventArgs) 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 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.

例外

引数が有効ではありません。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.

コール スタックの上位にある呼び出し元が、要求された操作のアクセス許可を保持していません。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.

呼び出し元は、接続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 などのコネクションレスプロトコルを使用している場合は、データを送受信ConnectAsyncする前にを呼び出す必要はありません。If you are using a connectionless protocol such as UDP, you do not have to call ConnectAsync before sending and receiving data. SendToAsync およびReceiveFromAsyncを使用して、リモートホストと通信することができます。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または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アドレスNotSupportedException ファミリSocketAsyncEventArgs.RemoteEndPointが同じアドレスファミリでない場合、メソッドはをスローします。 SocketThe 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) ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs) 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 SocketType SocketType

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

protocolType
ProtocolType ProtocolType ProtocolType ProtocolType

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

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.

例外

引数が有効ではありません。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.

コール スタックの上位にある呼び出し元が、要求された操作のアクセス許可を保持していません。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場合、は、パラメーター socketTypeprotocolTypeパラメーターで指定された既定のリモートホストを確立します。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.

呼び出し元は、接続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 などのコネクションレスプロトコルを使用している場合は、データを送受信ConnectAsyncする前にを呼び出す必要はありません。If you are using a connectionless protocol such as UDP, you do not have to call ConnectAsync before sending and receiving data. SendToAsync およびReceiveFromAsyncを使用して、リモートホストと通信することができます。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または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アドレスNotSupportedException ファミリSocketAsyncEventArgs.RemoteEndPointが同じアドレスファミリでない場合、メソッドはをスローします。 SocketThe 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.

適用対象