Uso di socket clientUsing Client Sockets

Prima di poter avviare una conversazione tramite un Socket, è necessario creare una pipe di dati tra l'applicazione e il dispositivo remoto.Before you can initiate a conversation through a Socket, you must create a data pipe between your application and the remote device. Anche se esistono altre famiglie di indirizzi di rete e protocolli, questo esempio mostra come creare una connessione TCP/IP a un servizio remoto.Although other network address families and protocols exist, this example shows how to create a TCP/IP connection to a remote service.

TCP/IP usa un indirizzo di rete e un numero di porta del servizio per identificare in modo univoco un servizio.TCP/IP uses a network address and a service port number to uniquely identify a service. L'indirizzo di rete identifica un determinato dispositivo in rete. Il numero di porta identifica il servizio specifico in tale dispositivo a cui connettersi.The network address identifies a specific device on the network; the port number identifies the specific service on that device to connect to. La combinazione di indirizzo di rete e porta del servizio viene denominata endpoint, rappresentato in .NET Framework dalla classe EndPoint.The combination of network address and service port is called an endpoint, which is represented in the .NET Framework by the EndPoint class. Viene definito un discendente di EndPoint per ogni famiglia di indirizzi supportata. Per la famiglia di indirizzi IP, la classe è IPEndPoint.A descendant of EndPoint is defined for each supported address family; for the IP address family, the class is IPEndPoint.

La classe Dns fornisce servizi DNS alle applicazioni che usano i servizi TCP/IP Internet.The Dns class provides domain-name services to applications that use TCP/IP Internet services. Il metodo Resolve richiede a un server DNS di eseguire il mapping di un nome descrittivo di dominio (ad esempio "host.contoso.com") a un indirizzo Internet numerico (ad esempio 192.168.1.1).The Resolve method queries a DNS server to map a user-friendly domain name (such as "host.contoso.com") to a numeric Internet address (such as 192.168.1.1). Resolve restituisce una voce IPHostEntry che contiene un elenco di indirizzi e alias per il nome richiesto.Resolve returns an IPHostEntry that contains a list of addresses and aliases for the requested name. Nella maggior parte dei casi, è possibile usare il primo indirizzo restituito nella matrice AddressList.In most cases, you can use the first address returned in the AddressList array. Il codice seguente ottiene un IPAddress contenente l'indirizzo IP del server host.contoso.com.The following code gets an IPAddress containing the IP address for the server host.contoso.com.

Dim ipHostInfo As IPHostEntry = Dns.Resolve("host.contoso.com")  
Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)  
IPHostEntry ipHostInfo = Dns.Resolve("host.contoso.com");  
IPAddress ipAddress = ipHostInfo.AddressList[0];  

IANA (Internet Assigned Numbers Authority) definisce i numeri di porta per i servizi comuni. Per altre informazioni, vedere www.iana.org/assignments/port-numbers.The Internet Assigned Numbers Authority (Iana) defines port numbers for common services (for more information, see www.iana.org/assignments/port-numbers). Altri servizi possono avere numeri di porta registrati nell'intervallo da 1024 a 65.535.Other services can have registered port numbers in the range 1,024 to 65,535. Il codice seguente combina l'indirizzo IP per host.contoso.com con un numero di porta per creare un endpoint remoto per una connessione.The following code combines the IP address for host.contoso.com with a port number to create a remote endpoint for a connection.

Dim ipe As New IPEndPoint(ipAddress, 11000)  
IPEndPoint ipe = new IPEndPoint(ipAddress,11000);  

Dopo aver determinato l'indirizzo del dispositivo remoto e aver scelto la porta da usare per la connessione, l'applicazione può tentare di stabilire una connessione con il dispositivo remoto.After determining the address of the remote device and choosing a port to use for the connection, the application can attempt to establish a connection with the remote device. L'esempio seguente usa un IPEndPoint esistente per connettersi a un dispositivo remoto e intercetta le eventuali eccezioni generate.The following example uses an existing IPEndPoint to connect to a remote device and catches any exceptions that are thrown.

Try  
    s.Connect(ipe)  
Catch ae As ArgumentNullException  
    Console.WriteLine("ArgumentNullException : {0}", _  
        ae.ToString())  
Catch se As SocketException  
    Console.WriteLine("SocketException : {0}", se.ToString())  
Catch e As Exception  
    Console.WriteLine("Unexpected exception : {0}", e.ToString())  
End Try  
try {  
    s.Connect(ipe);  
} catch(ArgumentNullException ae) {  
    Console.WriteLine("ArgumentNullException : {0}", ae.ToString());  
} catch(SocketException se) {  
    Console.WriteLine("SocketException : {0}", se.ToString());  
} catch(Exception e) {  
    Console.WriteLine("Unexpected exception : {0}", e.ToString());  
}  

Vedere ancheSee Also

Uso di un socket client sincronoUsing a Synchronous Client Socket
Uso di un socket client asincronoUsing an Asynchronous Client Socket
Procedura: Creare un socketHow to: Create a Socket
SocketSockets