Socket.Connect Metodo

Definizione

Stabilisce una connessione a un host remoto.

Overload

Connect(EndPoint)

Stabilisce una connessione a un host remoto.

Connect(IPAddress, Int32)

Stabilisce una connessione a un host remoto. L'host è specificato da un indirizzo IP e da un numero di porta.

Connect(IPAddress[], Int32)

Stabilisce una connessione a un host remoto. L'host è specificato da una matrice di indirizzi IP e da un numero di porta.

Connect(String, Int32)

Stabilisce una connessione a un host remoto. L'host viene specificato da un nome host e da un numero di porta.

Connect(EndPoint)

Stabilisce una connessione a un host remoto.

public:
 void Connect(System::Net::EndPoint ^ remoteEP);
public void Connect (System.Net.EndPoint remoteEP);
member this.Connect : System.Net.EndPoint -> unit
Public Sub Connect (remoteEP As EndPoint)

Parametri

remoteEP
EndPoint

Oggetto EndPoint che rappresenta il dispositivo remoto.

Eccezioni

remoteEP è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Un chiamante di livello superiore nello stack di chiamate non ha l'autorizzazione per l'operazione richiesta.

Socket è stato collocato in uno stato di ascolto mediante la chiamata di Listen(Int32).

Esempio

Nell'esempio di codice seguente si connette a un endpoint remoto e quindi verifica la connessione.

client->Connect( anEndPoint );
if (  !client->Connected )
{
   Console::WriteLine( "Winsock error: {0}", Convert::ToString(
      System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) );
}
   
// This is how you can determine whether a socket is still connected.
bool blockingState = client->Blocking;
try
{
   array<Byte>^tmp = gcnew array<Byte>(1);
   client->Blocking = false;
   client->Send( tmp, 0, static_cast<SocketFlags>(0) );
   Console::WriteLine( L"Connected!" );
}
catch ( SocketException^ e ) 
{
   // 10035 == WSAEWOULDBLOCK
   if ( e->NativeErrorCode.Equals( 10035 ) )
   {
      Console::WriteLine( "Connected from an exception!" );
   }
   else
   {
      Console::WriteLine( "Disconnected: {0}!", e->NativeErrorCode );
   }
}
finally
{
   client->Blocking = blockingState;
}

Console::WriteLine( "Connected: {0}", client->Connected );
// .Connect throws an exception if unsuccessful
client.Connect(anEndPoint);

// This is how you can determine whether a socket is still connected.
bool blockingState = client.Blocking;
try
{
    byte [] tmp = new byte[1];

    client.Blocking = false;
    client.Send(tmp, 0, 0);
    Console.WriteLine("Connected!");
}
catch (SocketException e)
{
    // 10035 == WSAEWOULDBLOCK
    if (e.NativeErrorCode.Equals(10035))
    {
        Console.WriteLine("Still Connected, but the Send would block");
    }
    else
    {
        Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
    }
}
finally
{
    client.Blocking = blockingState;
}

Console.WriteLine("Connected: {0}", client.Connected);
    ' .Connect throws an exception if unsuccessful
    client.Connect(anEndPoint)
    
    ' This is how you can determine whether a socket is still connected.
    Dim blockingState As Boolean = client.Blocking
    Try
        Dim tmp(0) As Byte
        
        client.Blocking = False
        client.Send(tmp, 0, 0)
        Console.WriteLine("Connected!")
    Catch e As SocketException
        ' 10035 == WSAEWOULDBLOCK
        If e.NativeErrorCode.Equals(10035) Then
            Console.WriteLine("Still Connected, but the Send would block")
        Else
            Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode)
        End If
    Finally
        client.Blocking = blockingState
    End Try
    
    Console.WriteLine("Connected: {0}", client.Connected)

End Sub

Commenti

Se si usa un protocollo orientato alla connessione, ad esempio TCP, il Connect metodo stabilisce in modo sincrono una connessione di rete tra LocalEndPoint e l'endpoint remoto specificato. Se si usa un protocollo senza connessione, Connect stabilisce un host remoto predefinito. Dopo aver chiamato Connect, è possibile inviare dati al dispositivo remoto con il Send metodo o ricevere dati dal dispositivo remoto con il Receive metodo .

Se si usa un protocollo senza connessione, ad esempio UDP, non è necessario chiamare Connect prima di inviare e ricevere dati. È possibile usare SendTo e ReceiveFrom comunicare in modo sincrono con un host remoto. Se si chiama Connect, tutti i datagrammi che arrivano da un indirizzo diverso dal valore predefinito specificato verranno ignorati. Se si vuole impostare l'host remoto predefinito su un indirizzo di trasmissione, è prima necessario chiamare il SetSocketOption metodo e impostare l'opzione socket su SocketOptionName.Broadcasto Connect genererà un SocketExceptionoggetto . Se si riceve un SocketExceptionoggetto , utilizzare la proprietà per ottenere il SocketException.ErrorCode codice di errore specifico. Dopo aver ottenuto questo codice, vedere la documentazione del codice di errore Windows Sockets versione 2 dell'API per una descrizione dettagliata dell'errore.

Il Connect metodo blocca, a meno che non si imposta in modo specifico la Blocking proprietà su false prima di chiamare Connect. Se si usa un protocollo orientato alla connessione, ad esempio TCP e si disabilita il blocco, Connect verrà generata una SocketException classe perché è necessario tempo per effettuare la connessione. I protocolli senza connessione non genereranno un'eccezione perché stabiliscono semplicemente un host remoto predefinito. È possibile usare SocketException.ErrorCode per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, vedere la documentazione del codice di errore Windows Sockets versione 2 dell'API per una descrizione dettagliata dell'errore. Se l'errore restituito WSAEWOULDBLOCK, la connessione host remota è stata avviata da una connessione orientata Socketalla connessione, ma non è ancora stata completata correttamente. Usare il metodo per determinare al termine della Poll Socket connessione.

Nota

Se si usa un protocollo orientato alla connessione e non Bind viene chiamato prima di chiamare Connect, il provider di servizi sottostante assegna l'indirizzo di rete locale e il numero di porta. Se si usa un protocollo senza connessione, il provider di servizi non assegna un indirizzo di rete locale e un numero di porta finché non si completa un'operazione di invio o ricezione. Se si vuole modificare l'host remoto predefinito, chiamare Connect di nuovo con l'endpoint desiderato.

Nota

Se il socket è stato disconnesso in precedenza, non è possibile usare questo metodo per ripristinare la connessione. Usare uno dei metodi asincroni BeginConnect per riconnettersi. Si tratta di una limitazione del provider sottostante.

Nota

Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. Per altre informazioni, vedere Traccia di rete in .NET Framework.

Vedi anche

Si applica a

Connect(IPAddress, Int32)

Stabilisce una connessione a un host remoto. L'host è specificato da un indirizzo IP e da un numero di porta.

public:
 void Connect(System::Net::IPAddress ^ address, int port);
public void Connect (System.Net.IPAddress address, int port);
member this.Connect : System.Net.IPAddress * int -> unit
Public Sub Connect (address As IPAddress, port As Integer)

Parametri

address
IPAddress

L'indirizzo IP dell'host remoto.

port
Int32

Numero di porta dell'host remoto.

Eccezioni

address è null.

Il numero di porta non è valido.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Questo metodo è valido per i socket nelle famiglie InterNetwork o InterNetworkV6.

La lunghezza di address è zero.

Socket è stato collocato in uno stato di ascolto mediante la chiamata di Listen(Int32).

Esempio

Nell'esempio di codice seguente si connette a un endpoint remoto e quindi verifica la connessione.

// Synchronous connect using IPAddress to resolve the 
// host name.
static void Connect1( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( IPs[ 0 ], port );
   Console::WriteLine( "Connection established" );
}
// Synchronous connect using IPAddress to resolve the
// host name.
public static void Connect1(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

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

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(IPs[0], port);
    Console.WriteLine("Connection established");
}

Commenti

Se si usa un protocollo orientato alla connessione, ad esempio TCP, il Connect metodo stabilisce in modo sincrono una connessione di rete tra LocalEndPoint e l'endpoint remoto specificato. Se si usa un protocollo senza connessione, Connect stabilisce un host remoto predefinito. Dopo aver Connect chiamato è possibile inviare dati al dispositivo remoto con il Send metodo o ricevere dati dal dispositivo remoto con il Receive metodo .

Se si usa un protocollo senza connessione, ad esempio UDP, non è necessario chiamare Connect prima di inviare e ricevere dati. È possibile usare SendTo e ReceiveFrom comunicare in modo sincrono con un host remoto. Se si chiamano Connect i datagrammi che arrivano da un indirizzo diverso dal valore predefinito specificato, verranno ignorati. Se si vuole impostare l'host remoto predefinito su un indirizzo di trasmissione, è prima necessario chiamare il SetSocketOption metodo e impostare l'opzione socket su SocketOptionName.Broadcasto Connect genererà un SocketExceptionoggetto . Se si riceve un SocketExceptionoggetto , utilizzare la proprietà per ottenere il SocketException.ErrorCode codice di errore specifico. Dopo aver ottenuto questo codice, vedere la documentazione del codice di errore Windows Sockets versione 2 dell'API per una descrizione dettagliata dell'errore.

Connect il metodo blocca, a meno che non si imposta in modo specifico la Blocking proprietà su false prima di chiamare Connect. Se si usa un protocollo orientato alla connessione, ad esempio TCP e si disabilita il blocco, Connect verrà generata una SocketException classe perché è necessario tempo per effettuare la connessione. I protocolli senza connessione non genereranno un'eccezione perché stabiliscono semplicemente un host remoto predefinito. È possibile usare SocketException.ErrorCode per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, vedere la documentazione del codice di errore Windows Sockets versione 2 dell'API per una descrizione dettagliata dell'errore. Se l'errore restituito WSAEWOULDBLOCK, la connessione host remota è stata avviata da una connessione orientata Socketalla connessione, ma non è ancora stata completata correttamente. Usare il metodo per determinare al termine della Poll Socket connessione.

Nota

Se si usa un protocollo orientato alla connessione e non Bind viene chiamato prima di chiamare Connect, il provider di servizi sottostante assegna l'indirizzo di rete locale e il numero di porta. Se si usa un protocollo senza connessione, il provider di servizi non assegna un indirizzo di rete locale e un numero di porta finché non si completa un'operazione di invio o ricezione. Se si vuole modificare l'host remoto predefinito, chiamare Connect di nuovo con l'endpoint desiderato.

Nota

Se il socket è stato disconnesso in precedenza, non è possibile usare questo metodo per ripristinare la connessione. Usare uno dei metodi asincroni BeginConnect per riconnettersi. Si tratta di una limitazione del provider sottostante.

Nota

Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. Per altre informazioni, vedere Traccia di rete in .NET Framework.

Si applica a

Connect(IPAddress[], Int32)

Stabilisce una connessione a un host remoto. L'host è specificato da una matrice di indirizzi IP e da un numero di porta.

public:
 void Connect(cli::array <System::Net::IPAddress ^> ^ addresses, int port);
public void Connect (System.Net.IPAddress[] addresses, int port);
member this.Connect : System.Net.IPAddress[] * int -> unit
Public Sub Connect (addresses As IPAddress(), port As Integer)

Parametri

addresses
IPAddress[]

L'indirizzo IP dell'host remoto.

port
Int32

Numero di porta dell'host remoto.

Eccezioni

addresses è null.

Il numero di porta non è valido.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Il socket non si trova nelle InterNetwork famiglie o InterNetworkV6 .

La lunghezza di address è zero.

Socket è stato collocato in uno stato di ascolto mediante la chiamata di Listen(Int32).

Esempio

L'esempio di codice seguente si connette a un endpoint remoto e quindi verifica la connessione.

// Synchronous connect using Dns.ResolveToAddresses to 
// resolve the host name.
static void Connect2( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( IPs, port );
   Console::WriteLine( "Connection established" );
}
// Synchronous connect using Dns.GetHostAddresses to
// resolve the host name.
public static void Connect2(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);
    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(IPs, port);
    Console.WriteLine("Connection established");
}

Commenti

Questo metodo viene in genere usato immediatamente dopo una chiamata a GetHostAddresses, che può restituire più indirizzi IP per un singolo host. Se si usa un protocollo orientato alla connessione, ad esempio TCP, il Connect metodo stabilisce in modo sincrono una connessione di rete tra LocalEndPoint e l'endpoint remoto specificato. Se si usa un protocollo senza connessione, Connect stabilisce un host remoto predefinito. Dopo aver chiamato Connect è possibile inviare dati al dispositivo remoto con il Send metodo o ricevere dati dal dispositivo remoto con il Receive metodo .

Se si usa un protocollo senza connessione, ad esempio UDP, non è necessario chiamare Connect prima di inviare e ricevere dati. È possibile usare SendTo e ReceiveFrom per comunicare in modo sincrono con un host remoto. Se si chiamano Connect datagrammi che arrivano da un indirizzo diverso dal valore predefinito specificato, verranno eliminati. Se si desidera impostare l'host remoto predefinito su un indirizzo di trasmissione, è necessario chiamare il SetSocketOption metodo e impostare l'opzione socket su SocketOptionName.Broadcasto Connect genererà un'eccezione SocketException. Se si riceve un SocketExceptionoggetto , utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.

Connect il metodo verrà bloccato, a meno che non si imposti in modo specifico la Blocking proprietà su false prima di chiamare Connect. Se si usa un protocollo orientato alla connessione, ad esempio TCP e si disabilita il blocco, Connect verrà generata un'eccezione SocketException perché è necessario tempo per stabilire la connessione. I protocolli senza connessione non genereranno un'eccezione perché stabiliscono semplicemente un host remoto predefinito. È possibile usare SocketException.ErrorCode per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore. Se l'errore restituito WSAEWOULDBLOCK, la connessione host remota è stata avviata da un oggetto orientato alla Socketconnessione, ma non è ancora stata completata correttamente. Utilizzare il Poll metodo per determinare al termine della Socket connessione.

Nota

Se si usa un protocollo orientato alla connessione e non viene chiamato prima di chiamare Bind Connect, il provider di servizi sottostante assegnerà l'indirizzo di rete locale e il numero di porta. Se si usa un protocollo senza connessione, il provider di servizi non assegnerà un indirizzo di rete locale e un numero di porta finché non si completa un'operazione di invio o ricezione. Se si vuole modificare l'host remoto predefinito, chiamare Connect di nuovo con l'endpoint desiderato.

Nota

Se il socket è stato disconnesso in precedenza, non è possibile usare questo metodo per ripristinare la connessione. Usare uno dei metodi asincroni BeginConnect per riconnettersi. Si tratta di una limitazione del provider sottostante.

Nota

Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. Per altre informazioni, vedere Traccia di rete in .NET Framework.

Si applica a

Connect(String, Int32)

Stabilisce una connessione a un host remoto. L'host viene specificato da un nome host e da un numero di porta.

public:
 void Connect(System::String ^ host, int port);
public void Connect (string host, int port);
member this.Connect : string * int -> unit
Public Sub Connect (host As String, port As Integer)

Parametri

host
String

Il nome dell'host remoto.

port
Int32

Numero di porta dell'host remoto.

Eccezioni

host è null.

Il numero di porta non è valido.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Il socket non si trova nelle InterNetwork famiglie o InterNetworkV6 .

Socket è stato collocato in uno stato di ascolto mediante la chiamata di Listen(Int32).

Esempio

L'esempio di codice seguente si connette a un endpoint remoto e quindi verifica la connessione.

// Synchronous connect using host name (resolved by the 
// Connect call.)
static void Connect3( String^ host, int port )
{
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->Connect( host, port );
   Console::WriteLine( "Connection established" );
}
// Synchronous connect using host name (resolved by the
// Connect call.)
public static void Connect3(string host, int port)
{
    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.Connect(host, port);
    Console.WriteLine("Connection established");
}

Commenti

Se si usa un protocollo orientato alla connessione, ad esempio TCP, il Connect metodo stabilisce in modo sincrono una connessione di rete tra LocalEndPoint e l'host remoto specificato. Se si usa un protocollo senza connessione, Connect stabilisce un host remoto predefinito. Dopo aver chiamato Connect è possibile inviare dati al dispositivo remoto con il Send metodo o ricevere dati dal dispositivo remoto con il Receive metodo .

Se si usa un protocollo senza connessione, ad esempio UDP, non è necessario chiamare Connect prima di inviare e ricevere dati. È possibile usare SendTo e ReceiveFrom per comunicare in modo sincrono con un host remoto. Se si chiamano Connect datagrammi che arrivano da un indirizzo diverso dal valore predefinito specificato, verranno eliminati. Se si desidera impostare l'host remoto predefinito su un indirizzo di trasmissione, è necessario chiamare il SetSocketOption metodo e impostare l'opzione socket su SocketOptionName.Broadcasto Connect genererà un'eccezione SocketException. Se si riceve un SocketExceptionoggetto , utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.

Il Connect metodo verrà bloccato, a meno che non si imposti in modo specifico la Blocking proprietà su false prima di chiamare Connect. Se si usa un protocollo orientato alla connessione, ad esempio TCP e si disabilita il blocco, Connect verrà generata un'eccezione SocketException perché è necessario tempo per stabilire la connessione. I protocolli senza connessione non genereranno un'eccezione perché stabiliscono semplicemente un host remoto predefinito. È possibile usare SocketException.ErrorCode per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore. Se l'errore restituito WSAEWOULDBLOCK, la connessione host remota è stata avviata da un oggetto orientato alla Socketconnessione, ma non è ancora stata completata correttamente. Utilizzare il Poll metodo per determinare al termine della Socket connessione.

Se IPv6 è abilitato e il Connect(String, Int32) metodo viene chiamato per connettersi a un host che si risolve in indirizzi IPv6 e IPv4, la connessione all'indirizzo IPv6 verrà tentata prima dell'indirizzo IPv4. Questo può avere l'effetto di ritardare il tempo di stabilire la connessione se l'host non è in ascolto sull'indirizzo IPv6.

Nota

Se si usa un protocollo orientato alla connessione e non viene chiamato prima di chiamare Bind Connect, il provider di servizi sottostante assegnerà l'indirizzo di rete locale e il numero di porta. Se si usa un protocollo senza connessione, il provider di servizi non assegnerà un indirizzo di rete locale e un numero di porta finché non si completa un'operazione di invio o ricezione. Se si vuole modificare l'host remoto predefinito, chiamare Connect di nuovo con l'endpoint desiderato.

Nota

Se il socket è stato disconnesso in precedenza, non è possibile usare questo metodo per ripristinare la connessione. Usare uno dei metodi asincroni BeginConnect per riconnettersi. Si tratta di una limitazione del provider sottostante.

Nota

Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. Per altre informazioni, vedere Traccia di rete in .NET Framework.

Si applica a