Socket.Connect Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
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
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
L'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 per comunicare in modo sincrono con un host remoto. Se si chiama Connect, gli eventuali 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.
Nota
Se si usa un protocollo orientato alla connessione e non viene chiamato prima di chiamare BindConnect, 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.
Vedi anche
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- LocalEndPoint
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- Blocking
- Poll(Int32, SelectMode)
Si applica a
Connect(IPAddress, Int32)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
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
L'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 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 BindConnect, 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(IPAddress[], Int32)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
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 BindConnect, 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)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
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 BindConnect, 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.