Socket.BeginConnect Socket.BeginConnect Socket.BeginConnect Socket.BeginConnect Method

定義

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

オーバーロード

BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object)

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

BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object)

リモート ホスト接続への非同期要求を開始します。Begins an asynchronous request for a remote host connection. ホストは IPAddress とポート番号で指定されます。The host is specified by an IPAddress and a port number.

BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

リモート ホスト接続への非同期要求を開始します。Begins an asynchronous request for a remote host connection. ホストは、IPAddress 配列とポート番号で指定されます。The host is specified by an IPAddress array and a port number.

BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object)

リモート ホスト接続への非同期要求を開始します。Begins an asynchronous request for a remote host connection. ホストはホスト名とポート番号で指定されます。The host is specified by a host name and a port number.

BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object)

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

public:
 IAsyncResult ^ BeginConnect(System::Net::EndPoint ^ end_point, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.EndPoint end_point, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (end_point As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

パラメーター

remoteEP
EndPoint EndPoint EndPoint EndPoint

リモート ホストを表す EndPointAn EndPoint that represents the remote host.

state
Object Object Object Object

この要求のステータス情報を格納するオブジェクト。An object that contains state information for this request.

戻り値

非同期接続を参照する IAsyncResultAn IAsyncResult that references the asynchronous connection.

例外

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

コール スタックの上位にある呼び出し元が、要求された操作のアクセス許可を保持していません。A caller higher in the call stack does not have permission for the requested operation.

SocketListen(Int32) を呼び出すことでリッスン状態になっているか、非同期操作は既に実行されています。The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

次のコード例では、非同期接続の試行を開始します。The following code example initiates an asynchronous connection attempt.

IPHostEntry^ lipa = Dns::Resolve( "host.contoso.com" );
IPEndPoint^ lep = gcnew IPEndPoint( lipa->AddressList[ 0 ], 11000 );

Socket^ s = gcnew Socket( lep->Address->AddressFamily,
   SocketType::Stream,
   ProtocolType::Tcp );
try
{
   while ( true )
   {
      allDone->Reset();

      Console::WriteLine( "Establishing Connection" );
      s->BeginConnect( lep, gcnew AsyncCallback(
         &Async_Send_Receive::Connect_Callback ), s );

      allDone->WaitOne();
   }
}
catch ( Exception^ e ) 
{
   Console::WriteLine( e );
}
IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000);

      Socket s = new Socket(lep.Address.AddressFamily,
      	                           SocketType.Stream,
                                        ProtocolType.Tcp);
      try{
         
                while(true){
                allDone.Reset();

                Console.WriteLine("Establishing Connection");
                s.BeginConnect(lep, new AsyncCallback(Async_Send_Receive.Connect_Callback), s);

                allDone.WaitOne();
           }
      }
      catch (Exception e){
           Console.WriteLine(e.ToString());
      }
   Dim lipa As IPHostEntry = Dns.Resolve("host.contoso.com")
   Dim lep As New IPEndPoint(lipa.AddressList(0), 11000)
   
   Dim s As New Socket(lep.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
   Try
      
      While True
         allDone.Reset()
         
         Console.WriteLine("Establishing Connection")

         s.BeginConnect(lep, New AsyncCallback(AddressOf Async_Send_Receive.Connect_Callback), s)
         
         allDone.WaitOne()
      End While
   Catch e As Exception
      Console.WriteLine(e.ToString())
   End Try
End Sub

注釈

接続指向プロトコルを使用している場合、メソッドBeginConnectは、 remoteEPパラメーターへの接続に対する非同期要求を開始します。If you are using a connection-oriented protocol, the BeginConnect method starts an asynchronous request for a connection to the remoteEP parameter. コネクションレスプロトコルを使用しているBeginConnect場合は、によって既定のリモートホストが確立されます。If you are using a connectionless protocol, BeginConnect establishes a default remote host. 既定のリモートホストを非同期的に接続または設定すると、別の実行スレッド内でデータを送受信することができます。Connecting or setting the default remote host asynchronously gives you the ability to send and receive data within a separate execution thread.

AsyncCallbackデリゲートを実装するコールバックメソッドを作成し、その名前BeginConnectをメソッドに渡すことができます。You can create a callback method that implements the AsyncCallback delegate and pass its name to the BeginConnect method. 少なくとも、 Socket stateパラメーターを使用してをBeginConnectに渡す必要があります。At the very minimum, you must pass the Socket to BeginConnect through the state parameter. コールバックでより多くの情報が必要な場合は、 Socketを保持する小さいクラスと、その他の必要な情報を作成できます。If your callback needs more information, you can create a small class to hold the Socket, and the other required information. パラメーターstateを使用して、このクラスBeginConnectのインスタンスをメソッドに渡します。Pass an instance of this class to the BeginConnect method through the state parameter.

コールバックメソッドは、メソッドEndConnectを呼び出す必要があります。Your callback method should invoke the EndConnect method. アプリケーションがを呼びBeginConnect出すと、システムは別のスレッドを使用して指定されたコールバックメソッドEndConnectを実行Socketし、が正常に接続するか例外をスローするまでブロックします。When your application calls BeginConnect, the system will use a separate thread to execute the specified callback method, and will block on EndConnect until the Socket connects successfully or throws an exception. BeginConnectメソッドを呼び出した後に元のスレッドがブロックされるようにWaitOneするには、を使用します。If you want the original thread to block after you call the BeginConnect method, use WaitOne. 元のスレッドの実行をManualResetEvent継続する場合は、コールバックメソッドので Set メソッドを呼び出します。Call the Set method on a ManualResetEvent in the callback method when you want the original thread to continue executing. コールバックメソッドの記述の詳細については、「コールバックメソッドとしてのデリゲートのマーシャリング」を参照してください。For additional information on writing callback methods see Marshaling a Delegate as a Callback Method.

UDP などのコネクションレスプロトコルを使用している場合は、データを送受信BeginConnectする前にを呼び出す必要はありません。If you are using a connectionless protocol such as UDP, you do not have to call BeginConnect before sending and receiving data. BeginSendTo およびBeginReceiveFromを使用して、リモートホストと通信することができます。You can use BeginSendTo and BeginReceiveFrom to communicate with a remote host. を呼び出すBeginConnectと、指定された既定以外のアドレスから到着したデータグラムはすべて破棄されます。If you do call BeginConnect, any datagrams that arrive from an address other than the specified default will be discarded. 既定のリモートホストをブロードキャストアドレスに設定する場合は、まずを呼び出しSetSocketOption 、にブロードキャストをtrue設定する必要があります。If you wish to set your default remote host to a broadcast address, you must first call SetSocketOption and set Broadcast to true. できない場合、 BeginConnectはをSocketExceptionスローします。If you cannot, BeginConnect will throw a SocketException.

接続指向プロトコルを使用していて、を呼び出すBind BeginConnect前にを呼び出さない場合、基になるサービスプロバイダーによって、最も適切なローカルネットワークアドレスとポート番号が割り当てられます。If you are using a connection-oriented protocol and do not call Bind before calling BeginConnect, the underlying service provider will assign the most appropriate local network address and port number. コネクションレスプロトコルを使用している場合、サービスプロバイダーは、メソッドBeginSendまたはReceiveFromメソッドを呼び出すまで、ローカルネットワークアドレスとポート番号を割り当てません。If you are using a connectionless protocol, the service provider will not assign a local network address and port number until you call the BeginSend or ReceiveFrom method. 既定のリモートホストを変更する場合は、目的のBeginConnectエンドポイントを使用してメソッドを再度呼び出します。If you want to change the default remote host, call the BeginConnect method again with the desired endpoint.

BeginConnectメソッドへの保留中の呼び出しを取り消すにはSocket、を閉じます。To cancel a pending call to the BeginConnect method, close the Socket. 非同期操作の実行中にBeginConnect メソッドが呼び出されると、メソッドに渡されたコールバックが呼び出されます。CloseWhen the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. 後続のメソッドのEndConnect呼び出しでは、操作が取り消されたことを示すためにがObjectDisposedExceptionスローされます。A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

注意

SocketException受け取った場合は、 SocketException.ErrorCodeプロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, 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.

注意

このソケットが以前に切断されてBeginConnectいた場合は、操作が完了するまで終了しないスレッドでを呼び出す必要があります。If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. これは、基になるプロバイダーの制限です。This is a limitation of the underlying provider.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

注意

非同期Socketメソッドに対して、実行コンテキスト (セキュリティコンテキスト、権限を借用したユーザー、および呼び出し元のコンテキスト) がキャッシュされます。The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. 特定のコンテキスト (特定の非同期Socketメソッド、 Socket特定のインスタンス、および特定のコールバック) を初めて使用した後、そのコンテキストを使用すると、パフォーマンスが向上します。After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.

こちらもご覧ください

BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object) BeginConnect(IPAddress, Int32, AsyncCallback, Object)

リモート ホスト接続への非同期要求を開始します。Begins an asynchronous request for a remote host connection. ホストは IPAddress とポート番号で指定されます。The host is specified by an IPAddress and a port number.

public:
 IAsyncResult ^ BeginConnect(System::Net::IPAddress ^ address, int port, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.IPAddress address, int port, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.IPAddress * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (address As IPAddress, port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

パラメーター

address
IPAddress IPAddress IPAddress IPAddress

リモート ホストの IPAddressThe IPAddress of the remote host.

port
Int32 Int32 Int32 Int32

リモート ホストのポート番号。The port number of the remote host.

requestCallback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

接続操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object Object Object Object

接続操作に関する情報を格納するユーザー定義のオブジェクト。A user-defined object that contains information about the connect operation. このオブジェクトは、操作の完了時に requestCallback デリゲートに渡されます。This object is passed to the requestCallback delegate when the operation is complete.

戻り値

非同期接続を参照する IAsyncResultAn IAsyncResult that references the asynchronous connection.

例外

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

Socket はソケット ファミリに含まれません。The Socket is not in the socket family.

address の長さが 0 です。The length of address is zero.

SocketListen(Int32) を呼び出すことでリッスン状態になっているか、非同期操作は既に実行されています。The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

次のコード例では、非同期接続の試行を開始します。The following code example initiates an asynchronous connection attempt.

static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
static void ConnectCallback1( IAsyncResult^ ar )
{
   allDone->Set();
   Socket^ s = dynamic_cast<Socket^>(ar->AsyncState);
   s->EndConnect( ar );
}


public static ManualResetEvent allDone = 
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect using the host name, resolved via 
// IPAddress
static void BeginConnect1( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   allDone->Reset();
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->BeginConnect( IPs[ 0 ], port, gcnew AsyncCallback( ConnectCallback1 ), s );
   
   // wait here until the connect finishes.  
   // The callback sets allDone.
   allDone->WaitOne();
   Console::WriteLine( "Connection established" );
}


// Asynchronous connect using the host name, resolved via 
// IPAddress
public static void BeginConnect1(string host, int port)
{

    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.BeginConnect(IPs[0], port, 
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  
    // The callback sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");

}		

注釈

非同期BeginConnect操作は、メソッドをEndConnect呼び出すことによって完了する必要があります。The asynchronous BeginConnect operation must be completed by calling the EndConnect method. 通常、メソッドはrequestCallbackデリゲートによって呼び出されます。Typically, the method is invoked by the requestCallback delegate.

このメソッドは、操作が完了するまでブロックしません。This method does not block until the operation is complete. 操作が完了するまでブロックするには、 ConnectメソッドのオーバーロードのいずれかまたはEndConnectを使用します。To block until the operation is complete, use one of the Connect method overloads, or EndConnect.

BeginConnectメソッドへの保留中の呼び出しを取り消すにはSocket、を閉じます。To cancel a pending call to the BeginConnect method, close the Socket. 非同期操作の実行中にBeginConnect メソッドが呼び出されると、メソッドに渡されたコールバックが呼び出されます。CloseWhen the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. 後続のメソッドのEndConnect呼び出しでは、操作が取り消されたことを示すためにがObjectDisposedExceptionスローされます。A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

非同期プログラミングモデルの使用方法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

注意

SocketException受け取った場合は、 SocketException.ErrorCodeプロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, 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.

注意

このソケットが以前に切断されてBeginConnectいた場合は、操作が完了するまで終了しないスレッドでを呼び出す必要があります。If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. これは、基になるプロバイダーの制限です。This is a limitation of the underlying provider. また、 EndPoint使用するは異なっている必要があります。Also the EndPoint that is used must be different.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

注意

非同期Socketメソッドに対して、実行コンテキスト (セキュリティコンテキスト、権限を借用したユーザー、および呼び出し元のコンテキスト) がキャッシュされます。The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. 特定のコンテキスト (特定の非同期Socketメソッド、 Socket特定のインスタンス、および特定のコールバック) を初めて使用した後、そのコンテキストを使用すると、パフォーマンスが向上します。After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.

こちらもご覧ください

BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object) BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

リモート ホスト接続への非同期要求を開始します。Begins an asynchronous request for a remote host connection. ホストは、IPAddress 配列とポート番号で指定されます。The host is specified by an IPAddress array and a port number.

public:
 IAsyncResult ^ BeginConnect(cli::array <System::Net::IPAddress ^> ^ addresses, int port, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.IPAddress[] addresses, int port, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.IPAddress[] * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (addresses As IPAddress(), port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

パラメーター

addresses
IPAddress[]

リモート ホストを指定する、少なくとも 1 つの IPAddressAt least one IPAddress, designating the remote host.

port
Int32 Int32 Int32 Int32

リモート ホストのポート番号。The port number of the remote host.

requestCallback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

接続操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object Object Object Object

接続操作に関する情報を格納するユーザー定義のオブジェクト。A user-defined object that contains information about the connect operation. このオブジェクトは、操作の完了時に requestCallback デリゲートに渡されます。This object is passed to the requestCallback delegate when the operation is complete.

戻り値

非同期接続を参照する IAsyncResultAn IAsyncResult that references the asynchronous connections.

例外

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

このメソッドは InterNetwork または InterNetworkV6 を使用するソケットで有効です。This method is valid for sockets that use InterNetwork or InterNetworkV6.

address の長さが 0 です。The length of address is zero.

SocketListen(Int32) を呼び出すことでリッスン状態になっているか、非同期操作は既に実行されています。The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

次のコード例では、非同期接続の試行を開始します。The following code example initiates an asynchronous connection attempt.

static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
static void ConnectCallback1( IAsyncResult^ ar )
{
   allDone->Set();
   Socket^ s = dynamic_cast<Socket^>(ar->AsyncState);
   s->EndConnect( ar );
}


public static ManualResetEvent allDone = 
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect, using DNS.ResolveToAddresses
static void BeginConnect2( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   allDone->Reset();
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->BeginConnect( IPs, port, gcnew AsyncCallback( ConnectCallback1 ), s );
   
   // wait here until the connect finishes.  The callback 
   // sets allDone.
   allDone->WaitOne();
   Console::WriteLine( "Connection established" );
}



// Asynchronous connect, using DNS.GetHostAddresses
public static void BeginConnect2(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.BeginConnect(IPs, port, 
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  The callback 
    // sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");
}		

注釈

非同期BeginConnect操作は、メソッドをEndConnect呼び出すことによって完了する必要があります。The asynchronous BeginConnect operation must be completed by calling the EndConnect method. 通常、メソッドはrequestCallbackデリゲートによって呼び出されます。Typically, the method is invoked by the requestCallback delegate.

このメソッドは、操作が完了するまでブロックしません。This method does not block until the operation is complete. 操作が完了するまでブロックするには、 Connectメソッドオーバーロードのいずれかを使用します。To block until the operation is complete, use one of the Connect method overloads.

BeginConnectメソッドへの保留中の呼び出しを取り消すにはSocket、を閉じます。To cancel a pending call to the BeginConnect method, close the Socket. 非同期操作の実行中にBeginConnect メソッドが呼び出されると、メソッドに渡されたコールバックが呼び出されます。CloseWhen the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. 後続のメソッドのEndConnect呼び出しでは、操作が取り消されたことを示すためにがObjectDisposedExceptionスローされます。A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

非同期プログラミングモデルの使用方法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.

注意

SocketException受け取った場合は、 SocketException.ErrorCodeプロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, 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.

注意

このソケットが以前に切断されてBeginConnectいた場合は、操作が完了するまで終了しないスレッドでを呼び出す必要があります。If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. これは、基になるプロバイダーの制限です。This is a limitation of the underlying provider. また、 EndPoint使用するは異なっている必要があります。Also the EndPoint that is used must be different.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

注意

非同期Socketメソッドに対して、実行コンテキスト (セキュリティコンテキスト、権限を借用したユーザー、および呼び出し元のコンテキスト) がキャッシュされます。The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. 特定のコンテキスト (特定の非同期Socketメソッド、 Socket特定のインスタンス、および特定のコールバック) を初めて使用した後、そのコンテキストを使用すると、パフォーマンスが向上します。After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.

こちらもご覧ください

BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object)

リモート ホスト接続への非同期要求を開始します。Begins an asynchronous request for a remote host connection. ホストはホスト名とポート番号で指定されます。The host is specified by a host name and a port number.

public:
 IAsyncResult ^ BeginConnect(System::String ^ host, int port, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (string host, int port, AsyncCallback callback, object state);
member this.BeginConnect : string * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (host As String, port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

パラメーター

host
String String String String

リモート ホストの名前。The name of the remote host.

port
Int32 Int32 Int32 Int32

リモート ホストのポート番号。The port number of the remote host.

requestCallback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

接続操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object Object Object Object

接続操作に関する情報を格納するユーザー定義のオブジェクト。A user-defined object that contains information about the connect operation. このオブジェクトは、操作の完了時に requestCallback デリゲートに渡されます。This object is passed to the requestCallback delegate when the operation is complete.

戻り値

非同期接続を参照する IAsyncResultAn IAsyncResult that references the asynchronous connection.

例外

このメソッドは InterNetwork または InterNetworkV6 ファミリ内のソケットに対して正しいものです。This method is valid for sockets in the InterNetwork or InterNetworkV6 families.

SocketListen(Int32) を呼び出すことでリッスン状態になっているか、非同期操作は既に実行されています。The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

次のコード例では、非同期接続の試行を開始します。The following code example initiates an asynchronous connection attempt.

static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
static void ConnectCallback1( IAsyncResult^ ar )
{
   allDone->Set();
   Socket^ s = dynamic_cast<Socket^>(ar->AsyncState);
   s->EndConnect( ar );
}


public static ManualResetEvent allDone = 
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect using host name (resolved by the 
// BeginConnect call.)
static void BeginConnect3( String^ host, int port )
{
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   allDone->Reset();
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->BeginConnect( host, port, gcnew AsyncCallback( ConnectCallback1 ), s );
   
   // wait here until the connect finishes.  The callback 
   // sets allDone.
   allDone->WaitOne();
   Console::WriteLine( "Connection established" );
}


// Asynchronous connect using host name (resolved by the 
// BeginConnect call.)
public static void BeginConnect3(string host, int port)
{
    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}", 
        host);
    s.BeginConnect(host, port, 
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  The callback 
    // sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");
}		

注釈

非同期BeginConnect操作は、メソッドをEndConnect呼び出すことによって完了する必要があります。The asynchronous BeginConnect operation must be completed by calling the EndConnect method. 通常、メソッドはrequestCallbackデリゲートによって呼び出されます。Typically, the method is invoked by the requestCallback delegate.

このメソッドは、操作が完了するまでブロックしません。This method does not block until the operation is complete. 操作が完了するまでブロックするには、 Connectメソッドオーバーロードのいずれかを使用します。To block until the operation is complete, use one of the Connect method overloads.

BeginConnectメソッドへの保留中の呼び出しを取り消すにはSocket、を閉じます。To cancel a pending call to the BeginConnect method, close the Socket. 非同期操作の実行中にBeginConnect メソッドが呼び出されると、メソッドに渡されたコールバックが呼び出されます。CloseWhen the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. 後続のメソッドのEndConnect呼び出しでは、操作が取り消されたことを示すためにがObjectDisposedExceptionスローされます。A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

非同期プログラミングモデルの使用方法の詳細については、「同期メソッドの非同期呼び出し」を参照してください。For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

注意

SocketException受け取った場合は、 SocketException.ErrorCodeプロパティを使用して、特定のエラーコードを取得します。If you receive a SocketException, 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.

注意

このソケットが以前に切断されてBeginConnectいた場合は、操作が完了するまで終了しないスレッドでを呼び出す必要があります。If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. これは、基になるプロバイダーの制限です。This is a limitation of the underlying provider. また、 EndPoint使用するは異なっている必要があります。Also the EndPoint that is used must be different.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

注意

非同期Socketメソッドに対して、実行コンテキスト (セキュリティコンテキスト、権限を借用したユーザー、および呼び出し元のコンテキスト) がキャッシュされます。The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. 特定のコンテキスト (特定の非同期Socketメソッド、 Socket特定のインスタンス、および特定のコールバック) を初めて使用した後、そのコンテキストを使用すると、パフォーマンスが向上します。After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.

こちらもご覧ください

適用対象