Socket.BeginConnect Methode

Definition

Beginnt eine asynchrone Anforderung einer Remotehostverbindung.Begins an asynchronous request for a remote host connection.

Überlädt

BeginConnect(EndPoint, AsyncCallback, Object)

Beginnt eine asynchrone Anforderung einer Remotehostverbindung.Begins an asynchronous request for a remote host connection.

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Beginnt eine asynchrone Anforderung einer Remotehostverbindung.Begins an asynchronous request for a remote host connection. Der Host wird durch eine IPAddress und eine Anschlussnummer angegeben.The host is specified by an IPAddress and a port number.

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

Beginnt eine asynchrone Anforderung einer Remotehostverbindung.Begins an asynchronous request for a remote host connection. Der Host wird durch ein IPAddress-Array und eine Anschlussnummer angegeben.The host is specified by an IPAddress array and a port number.

BeginConnect(String, Int32, AsyncCallback, Object)

Beginnt eine asynchrone Anforderung einer Remotehostverbindung.Begins an asynchronous request for a remote host connection. Der Host wird durch einen Hostnamen und eine Portnummer angegeben.The host is specified by a host name and a port number.

BeginConnect(EndPoint, AsyncCallback, Object)

Beginnt eine asynchrone Anforderung einer Remotehostverbindung.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

Parameter

remoteEP
EndPoint

Ein EndPoint, der den Remotehost darstellt.An EndPoint that represents the remote host.

callback
AsyncCallback

Der AsyncCallback-Delegat.The AsyncCallback delegate.

state
Object

Ein Objekt mit Zustandsinformationen für diese Anforderung.An object that contains state information for this request.

Gibt zurück

Ein IAsyncResult, das auf die asynchrone Verbindung verweist.An IAsyncResult that references the asynchronous connection.

Ausnahmen

remoteEP ist null.remoteEP is null.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Ein höher in der Aufrufliste befindlicher Aufrufer verfügt nicht über die Berechtigung für den angeforderten Vorgang.A caller higher in the call stack does not have permission for the requested operation.

Der Socket wurde durch den Aufruf von Listen(Int32) in einem Wartezustand platziert, oder ein asynchroner Vorgang wird bereits ausgeführt.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Beispiele

Im folgenden Codebeispiel wird ein asynchroner Verbindungsversuch initiiert.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

Hinweise

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, startet die BeginConnect-Methode eine asynchrone Anforderung für eine Verbindung mit dem remoteEP-Parameter.If you are using a connection-oriented protocol, the BeginConnect method starts an asynchronous request for a connection to the remoteEP parameter. Wenn Sie ein verbindungsloses Protokoll verwenden, stellt BeginConnect einen Standard Remote Host her.If you are using a connectionless protocol, BeginConnect establishes a default remote host. Das asynchrone verbinden oder Festlegen des Standard Remote Hosts ermöglicht Ihnen das Senden und empfangen von Daten in einem separaten Ausführungs Thread.Connecting or setting the default remote host asynchronously gives you the ability to send and receive data within a separate execution thread.

Sie können eine Rückruf Methode erstellen, die den AsyncCallback Delegaten implementiert und seinen Namen an die BeginConnect-Methode übergibt.You can create a callback method that implements the AsyncCallback delegate and pass its name to the BeginConnect method. Sie müssen die Socket nur minimal an BeginConnect über den state-Parameter übergeben.At the very minimum, you must pass the Socket to BeginConnect through the state parameter. Wenn Ihr Rückruf Weitere Informationen benötigt, können Sie eine kleine Klasse erstellen, um die Socketund die anderen erforderlichen Informationen zu speichern.If your callback needs more information, you can create a small class to hold the Socket, and the other required information. Übergeben Sie mithilfe des state-Parameters eine Instanz dieser Klasse an die BeginConnect-Methode.Pass an instance of this class to the BeginConnect method through the state parameter.

Die Rückruf Methode sollte die EndConnect-Methode aufrufen.Your callback method should invoke the EndConnect method. Wenn die Anwendung BeginConnectaufruft, verwendet das System einen separaten Thread, um die angegebene Rückruf Methode auszuführen, und blockiert EndConnect, bis der Socket erfolgreich eine Verbindung herstellt oder eine Ausnahme auslöst.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. Wenn der ursprüngliche Thread blockiert werden soll, nachdem Sie die BeginConnect-Methode aufgerufen haben, verwenden Sie WaitOne.If you want the original thread to block after you call the BeginConnect method, use WaitOne. Rufen Sie die Set-Methode für eine ManualResetEvent in der Rückruf Methode auf, wenn der ursprüngliche Thread weiter ausgeführt werden soll.Call the Set method on a ManualResetEvent in the callback method when you want the original thread to continue executing. Weitere Informationen zum Schreiben von Rückruf Methoden finden Sie unter Mars Hallen eines Delegaten als Rückruf Methode.For additional information on writing callback methods see Marshaling a Delegate as a Callback Method.

Wenn Sie ein verbindungsloses Protokoll (z. b. UDP) verwenden, müssen Sie BeginConnect vor dem Senden und empfangen von Daten nicht aufzurufen.If you are using a connectionless protocol such as UDP, you do not have to call BeginConnect before sending and receiving data. Sie können BeginSendTo und BeginReceiveFrom verwenden, um mit einem Remote Host zu kommunizieren.You can use BeginSendTo and BeginReceiveFrom to communicate with a remote host. Wenn Sie BeginConnectaufzurufen, werden alle Datagramme verworfen, die von einer anderen Adresse als der angegebenen Standardadresse eintreffen.If you do call BeginConnect, any datagrams that arrive from an address other than the specified default will be discarded. Wenn Sie den Standard-Remote Host auf eine Broadcast Adresse festlegen möchten, müssen Sie zuerst SetSocketOption und Broadcast auf truefestlegen.If you wish to set your default remote host to a broadcast address, you must first call SetSocketOption and set Broadcast to true. Wenn dies nicht möglich ist, wird BeginConnect eine SocketExceptionauslösen.If you cannot, BeginConnect will throw a SocketException.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden und Bind vor dem Aufrufen von BeginConnectnicht aufrufen, weist der zugrunde liegende Dienstanbieter die am besten geeignete Adresse und Portnummer für das lokale Netzwerk zu.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. Wenn Sie ein verbindungsloses Protokoll verwenden, weist der Dienstanbieter erst dann eine lokale Netzwerkadresse und eine Portnummer zu, wenn Sie die BeginSend-oder ReceiveFrom-Methode aufgerufen haben.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. Wenn Sie den Standard-Remote Host ändern möchten, müssen Sie die BeginConnect-Methode erneut mit dem gewünschten Endpunkt abrufen.If you want to change the default remote host, call the BeginConnect method again with the desired endpoint.

Um einen ausstehenden aufzurufenden BeginConnect-Methode abzubrechen, schließen Sie die Socket.To cancel a pending call to the BeginConnect method, close the Socket. Wenn die Close-Methode aufgerufen wird, während ein asynchroner Vorgang ausgeführt wird, wird der Rückruf, der für die BeginConnect-Methode bereitgestellt wird, aufgerufen.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Bei einem nachfolgenden-Rückruf der EndConnect-Methode wird ein ObjectDisposedException ausgelöst, um anzugeben, dass der Vorgang abgebrochen wurde.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Wenn dieser Socket bereits getrennt wurde, müssen BeginConnect für einen Thread aufgerufen werden, der nicht beendet wird, bis der Vorgang abgeschlossen ist.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Dies ist eine Einschränkung des zugrunde liegenden Anbieters.This is a limitation of the underlying provider.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Hinweis

Der Ausführungs Kontext (der Sicherheitskontext, der Benutzer, dessen Identität angenommen wurde, und der aufrufende Kontext) wird für die asynchronen Socket Methoden zwischengespeichert.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Nach der ersten Verwendung eines bestimmten Kontexts (einer bestimmten asynchronen Socket Methode, einer bestimmten Socket Instanz und eines bestimmten Rückrufs) wird bei der nachfolgenden Verwendung dieses Kontexts eine Leistungsverbesserung angezeigt.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.

Siehe auch

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Beginnt eine asynchrone Anforderung einer Remotehostverbindung.Begins an asynchronous request for a remote host connection. Der Host wird durch eine IPAddress und eine Anschlussnummer angegeben.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

Parameter

address
IPAddress

Die IPAddress des Remotehosts.The IPAddress of the remote host.

port
Int32

Die Portnummer des Remotehosts.The port number of the remote host.

requestCallback
AsyncCallback

Ein AsyncCallback-Delegat, der auf die Methode verweist, die bei Abschluss des Verbindungsvorgangs aufgerufen werden soll.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object

Ein benutzerdefiniertes Objekt, das Informationen über den Verbindungsvorgang enthält.A user-defined object that contains information about the connect operation. Dieses Objekt wird bei Abschluss des Vorgangs an den requestCallback-Delegaten übergeben.This object is passed to the requestCallback delegate when the operation is complete.

Gibt zurück

Ein IAsyncResult, das auf die asynchrone Verbindung verweist.An IAsyncResult that references the asynchronous connection.

Ausnahmen

address ist null.address is null.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Der Socket ist kein Mitglied der Socketfamilie.The Socket is not in the socket family.

Die Portnummer ist ungültig.The port number is not valid.

Die Länge von address ist 0 (null).The length of address is zero.

Der Socket wurde durch den Aufruf von Listen(Int32) in einem Wartezustand platziert, oder ein asynchroner Vorgang wird bereits ausgeführt.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Beispiele

Im folgenden Codebeispiel wird ein asynchroner Verbindungsversuch initiiert.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");

}		

Hinweise

Der asynchrone BeginConnect Vorgang muss abgeschlossen werden, indem die EndConnect-Methode aufgerufen wird.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. In der Regel wird die-Methode vom requestCallback-Delegaten aufgerufen.Typically, the method is invoked by the requestCallback delegate.

Diese Methode wird nicht blockiert, bis der Vorgang beendet ist.This method does not block until the operation is complete. Um zu blockieren, bis der Vorgang beendet ist, verwenden Sie eine der Connect Methoden Überladungen oder EndConnect.To block until the operation is complete, use one of the Connect method overloads, or EndConnect.

Um einen ausstehenden aufzurufenden BeginConnect-Methode abzubrechen, schließen Sie die Socket.To cancel a pending call to the BeginConnect method, close the Socket. Wenn die Close-Methode aufgerufen wird, während ein asynchroner Vorgang ausgeführt wird, wird der Rückruf, der für die BeginConnect-Methode bereitgestellt wird, aufgerufen.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Bei einem nachfolgenden-Rückruf der EndConnect-Methode wird ein ObjectDisposedException ausgelöst, um anzugeben, dass der Vorgang abgebrochen wurde.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Ausführliche Informationen zur Verwendung des asynchronen Programmiermodells finden Sie unter Asynchrones Aufrufen synchroner Methoden .For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Wenn dieser Socket bereits getrennt wurde, müssen BeginConnect für einen Thread aufgerufen werden, der nicht beendet wird, bis der Vorgang abgeschlossen ist.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Dies ist eine Einschränkung des zugrunde liegenden Anbieters.This is a limitation of the underlying provider. Außerdem müssen die EndPoint, die verwendet werden, unterschiedlich sein.Also the EndPoint that is used must be different.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Hinweis

Der Ausführungs Kontext (der Sicherheitskontext, der Benutzer, dessen Identität angenommen wurde, und der aufrufende Kontext) wird für die asynchronen Socket Methoden zwischengespeichert.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Nach der ersten Verwendung eines bestimmten Kontexts (einer bestimmten asynchronen Socket Methode, einer bestimmten Socket Instanz und eines bestimmten Rückrufs) wird bei der nachfolgenden Verwendung dieses Kontexts eine Leistungsverbesserung angezeigt.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.

Siehe auch

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

Beginnt eine asynchrone Anforderung einer Remotehostverbindung.Begins an asynchronous request for a remote host connection. Der Host wird durch ein IPAddress-Array und eine Anschlussnummer angegeben.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

Parameter

addresses
IPAddress[]

Mindestens eine IPAddress, die den Remotehost angibt.At least one IPAddress, designating the remote host.

port
Int32

Die Portnummer des Remotehosts.The port number of the remote host.

requestCallback
AsyncCallback

Ein AsyncCallback-Delegat, der auf die Methode verweist, die bei Abschluss des Verbindungsvorgangs aufgerufen werden soll.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object

Ein benutzerdefiniertes Objekt, das Informationen über den Verbindungsvorgang enthält.A user-defined object that contains information about the connect operation. Dieses Objekt wird bei Abschluss des Vorgangs an den requestCallback-Delegaten übergeben.This object is passed to the requestCallback delegate when the operation is complete.

Gibt zurück

Ein IAsyncResult, das auf die asynchronen Verbindungen verweist.An IAsyncResult that references the asynchronous connections.

Ausnahmen

addresses ist null.addresses is null.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Diese Methode ist für Sockets gültig, die InterNetwork oder InterNetworkV6 verwenden.This method is valid for sockets that use InterNetwork or InterNetworkV6.

Die Portnummer ist ungültig.The port number is not valid.

Die Länge von address ist 0 (null).The length of address is zero.

Der Socket wurde durch den Aufruf von Listen(Int32) in einem Wartezustand platziert, oder ein asynchroner Vorgang wird bereits ausgeführt.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Beispiele

Im folgenden Codebeispiel wird ein asynchroner Verbindungsversuch initiiert.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");
}		

Hinweise

Der asynchrone BeginConnect Vorgang muss abgeschlossen werden, indem die EndConnect-Methode aufgerufen wird.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. In der Regel wird die-Methode vom requestCallback-Delegaten aufgerufen.Typically, the method is invoked by the requestCallback delegate.

Diese Methode wird nicht blockiert, bis der Vorgang beendet ist.This method does not block until the operation is complete. Um zu blockieren, bis der Vorgang beendet ist, verwenden Sie eine der Connect-Methoden Überladungen.To block until the operation is complete, use one of the Connect method overloads.

Um einen ausstehenden aufzurufenden BeginConnect-Methode abzubrechen, schließen Sie die Socket.To cancel a pending call to the BeginConnect method, close the Socket. Wenn die Close-Methode aufgerufen wird, während ein asynchroner Vorgang ausgeführt wird, wird der Rückruf, der für die BeginConnect-Methode bereitgestellt wird, aufgerufen.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Bei einem nachfolgenden-Rückruf der EndConnect-Methode wird ein ObjectDisposedException ausgelöst, um anzugeben, dass der Vorgang abgebrochen wurde.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Ausführliche Informationen zur Verwendung des asynchronen Programmiermodells finden Sie unter Asynchrones Aufrufen synchroner Methoden.For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Wenn dieser Socket bereits getrennt wurde, müssen BeginConnect für einen Thread aufgerufen werden, der nicht beendet wird, bis der Vorgang abgeschlossen ist.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Dies ist eine Einschränkung des zugrunde liegenden Anbieters.This is a limitation of the underlying provider. Außerdem müssen die EndPoint, die verwendet werden, unterschiedlich sein.Also the EndPoint that is used must be different.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Hinweis

Der Ausführungs Kontext (der Sicherheitskontext, der Benutzer, dessen Identität angenommen wurde, und der aufrufende Kontext) wird für die asynchronen Socket Methoden zwischengespeichert.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Nach der ersten Verwendung eines bestimmten Kontexts (einer bestimmten asynchronen Socket Methode, einer bestimmten Socket Instanz und eines bestimmten Rückrufs) wird bei der nachfolgenden Verwendung dieses Kontexts eine Leistungsverbesserung angezeigt.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.

Siehe auch

BeginConnect(String, Int32, AsyncCallback, Object)

Beginnt eine asynchrone Anforderung einer Remotehostverbindung.Begins an asynchronous request for a remote host connection. Der Host wird durch einen Hostnamen und eine Portnummer angegeben.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

Parameter

host
String

Der Name des Remotehosts.The name of the remote host.

port
Int32

Die Portnummer des Remotehosts.The port number of the remote host.

requestCallback
AsyncCallback

Ein AsyncCallback-Delegat, der auf die Methode verweist, die bei Abschluss des Verbindungsvorgangs aufgerufen werden soll.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object

Ein benutzerdefiniertes Objekt, das Informationen über den Verbindungsvorgang enthält.A user-defined object that contains information about the connect operation. Dieses Objekt wird bei Abschluss des Vorgangs an den requestCallback-Delegaten übergeben.This object is passed to the requestCallback delegate when the operation is complete.

Gibt zurück

Ein IAsyncResult, das auf die asynchrone Verbindung verweist.An IAsyncResult that references the asynchronous connection.

Ausnahmen

host ist null.host is null.

Der Socket wurde geschlossen.The Socket has been closed.

Diese Methode gilt für Sockets der Familie InterNetwork oder InterNetworkV6.This method is valid for sockets in the InterNetwork or InterNetworkV6 families.

Die Portnummer ist ungültig.The port number is not valid.

Der Socket wurde durch den Aufruf von Listen(Int32) in einem Wartezustand platziert, oder ein asynchroner Vorgang wird bereits ausgeführt.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Beispiele

Im folgenden Codebeispiel wird ein asynchroner Verbindungsversuch initiiert.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");
}		

Hinweise

Der asynchrone BeginConnect Vorgang muss abgeschlossen werden, indem die EndConnect-Methode aufgerufen wird.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. In der Regel wird die-Methode vom requestCallback-Delegaten aufgerufen.Typically, the method is invoked by the requestCallback delegate.

Diese Methode wird nicht blockiert, bis der Vorgang beendet ist.This method does not block until the operation is complete. Um zu blockieren, bis der Vorgang beendet ist, verwenden Sie eine der Connect-Methoden Überladungen.To block until the operation is complete, use one of the Connect method overloads.

Um einen ausstehenden aufzurufenden BeginConnect-Methode abzubrechen, schließen Sie die Socket.To cancel a pending call to the BeginConnect method, close the Socket. Wenn die Close-Methode aufgerufen wird, während ein asynchroner Vorgang ausgeführt wird, wird der Rückruf, der für die BeginConnect-Methode bereitgestellt wird, aufgerufen.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Bei einem nachfolgenden-Rückruf der EndConnect-Methode wird ein ObjectDisposedException ausgelöst, um anzugeben, dass der Vorgang abgebrochen wurde.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Ausführliche Informationen zur Verwendung des asynchronen Programmiermodells finden Sie unter Asynchrones Aufrufen synchroner Methoden .For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Wenn dieser Socket bereits getrennt wurde, müssen BeginConnect für einen Thread aufgerufen werden, der nicht beendet wird, bis der Vorgang abgeschlossen ist.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Dies ist eine Einschränkung des zugrunde liegenden Anbieters.This is a limitation of the underlying provider. Außerdem müssen die EndPoint, die verwendet werden, unterschiedlich sein.Also the EndPoint that is used must be different.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Hinweis

Der Ausführungs Kontext (der Sicherheitskontext, der Benutzer, dessen Identität angenommen wurde, und der aufrufende Kontext) wird für die asynchronen Socket Methoden zwischengespeichert.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Nach der ersten Verwendung eines bestimmten Kontexts (einer bestimmten asynchronen Socket Methode, einer bestimmten Socket Instanz und eines bestimmten Rückrufs) wird bei der nachfolgenden Verwendung dieses Kontexts eine Leistungsverbesserung angezeigt.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.

Siehe auch

Gilt für: