Socket Costruttori

Definizione

Inizializza una nuova istanza della classe Socket.

Overload

Socket(SafeSocketHandle)

Inizializza una nuova istanza della classe Socket per l'handle del socket specificato.

Socket(SocketInformation)

Inizializza una nuova istanza della classe Socket utilizzando il valore specificato restituito da DuplicateAndClose(Int32).

Socket(SocketType, ProtocolType)

Inizializza una nuova istanza della classe Socket utilizzando il tipo di socket e il protocollo specificati. Se il sistema operativo supporta IPv6, questo costruttore crea un socket a doppia modalità; in caso contrario, crea un socket IPv4.

Socket(AddressFamily, SocketType, ProtocolType)

Inizializza una nuova istanza della classe Socket utilizzando la famiglia di indirizzi, il tipo di socket e il protocollo specificati.

Socket(SafeSocketHandle)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Inizializza una nuova istanza della classe Socket per l'handle del socket specificato.

public Socket (System.Net.Sockets.SafeSocketHandle handle);

Parametri

handle
SafeSocketHandle

Handle del socket che verrà incapsulato dall'oggetto Socket.

Eccezioni

handle è null.

handle non è valido.

handle non è un socket o non è possibile accedere alle informazioni sul socket.

Commenti

Questo metodo popola l'istanza Socket con i dati raccolti dall'oggetto fornito SafeSocketHandle. Diversi sistemi operativi offrono diversi livelli di supporto per l'esecuzione di query su un handle socket o un descrittore di file per le relative proprietà e configurazione. Alcune API pubbliche nell'istanza risultante Socket possono differire in base al sistema operativo, ad esempio ProtocolType e Blocking.

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET 5, 6, 7, 8, 9

Socket(SocketInformation)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Inizializza una nuova istanza della classe Socket utilizzando il valore specificato restituito da DuplicateAndClose(Int32).

[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public Socket (System.Net.Sockets.SocketInformation socketInformation);
public Socket (System.Net.Sockets.SocketInformation socketInformation);

Parametri

socketInformation
SocketInformation

Le informazioni sul socket restituite da DuplicateAndClose(Int32).

Attributi

Commenti

Se si chiama il Socket costruttore più volte con la stessa matrice di byte dell'argomento per ogni chiamata, si creeranno più s gestiti Socketcon lo stesso socket sottostante. Questa pratica è fortemente sconsigliata.

Si applica a

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Socket(SocketType, ProtocolType)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Inizializza una nuova istanza della classe Socket utilizzando il tipo di socket e il protocollo specificati. Se il sistema operativo supporta IPv6, questo costruttore crea un socket a doppia modalità; in caso contrario, crea un socket IPv4.

public Socket (System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType);

Parametri

socketType
SocketType

Uno dei valori di SocketType.

protocolType
ProtocolType

Uno dei valori di ProtocolType.

Eccezioni

La combinazione di socketType e protocolType restituisce un socket non valido.

Commenti

Il socketType parametro specifica il tipo della Socket classe e il protocolType parametro specifica il protocollo utilizzato da Socket. I due parametri non sono indipendenti. Spesso il Socket tipo è implicito nel protocollo. Se la combinazione di tipo e tipo di Socket protocollo restituisce un valore non valido Socket, questo costruttore genera un'eccezione SocketException.

Nota

Se questo costruttore genera un'eccezione SocketException, 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.

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

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Socket(AddressFamily, SocketType, ProtocolType)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Inizializza una nuova istanza della classe Socket utilizzando la famiglia di indirizzi, il tipo di socket e il protocollo specificati.

public Socket (System.Net.Sockets.AddressFamily addressFamily, System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType);

Parametri

addressFamily
AddressFamily

Uno dei valori di AddressFamily.

socketType
SocketType

Uno dei valori di SocketType.

protocolType
ProtocolType

Uno dei valori di ProtocolType.

Eccezioni

Il risultato della combinazione di addressFamily, socketType e protocolType è un socket non valido.

Esempio

Nell'esempio di codice seguente viene illustrato come creare un'istanza della Socket classe .

using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;

public class Sample
{

  public static string DoSocketGet(string server)
  {
    //Set up variables and String to write to the server.
    Encoding ASCII = Encoding.ASCII;
    string Get = "GET / HTTP/1.1\r\nHost: " + server +
                 "\r\nConnection: Close\r\n\r\n";
    Byte[] ByteGet = ASCII.GetBytes(Get);
    Byte[] RecvBytes = new Byte[256];
    String strRetPage = null;

    // IPAddress and IPEndPoint represent the endpoint that will
    //   receive the request.
    // Get first IPAddress in list return by DNS.

    try
    {

      // Define those variables to be evaluated in the next for loop and
      // then used to connect to the server. These variables are defined
      // outside the for loop to make them accessible there after.
      Socket s = null;
      IPEndPoint hostEndPoint;
      IPAddress hostAddress = null;
      int conPort = 80;

      // Get DNS host information.
      IPHostEntry hostInfo = Dns.GetHostEntry(server);
      // Get the DNS IP addresses associated with the host.
      IPAddress[] IPaddresses = hostInfo.AddressList;

      // Evaluate the socket and receiving host IPAddress and IPEndPoint.
      for (int index=0; index<IPaddresses.Length; index++)
      {
        hostAddress = IPaddresses[index];
        hostEndPoint = new IPEndPoint(hostAddress, conPort);


        // Creates the Socket to send data over a TCP connection.
        s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );


        // Connect to the host using its IPEndPoint.
        s.Connect(hostEndPoint);

        if (!s.Connected)
        {
          // Connection failed, try next IPaddress.
          strRetPage = "Unable to connect to host";
          s = null;
          continue;
        }

        // Sent the GET request to the host.
        s.Send(ByteGet, ByteGet.Length, 0);

      } // End of the for loop.


      // Receive the host home page content and loop until all the data is received.
      Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
      strRetPage = "Default HTML page on " + server + ":\r\n";
      strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

      while (bytes > 0)
      {
        bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
        strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
      }

    } // End of the try block.

    catch(SocketException e)
    {
      Console.WriteLine("SocketException caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
    catch(ArgumentNullException e)
    {
      Console.WriteLine("ArgumentNullException caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
    catch(NullReferenceException e)
    {
      Console.WriteLine("NullReferenceException caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
    catch(Exception e)
    {
      Console.WriteLine("Exception caught!!!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }

    return strRetPage;
}
   public static void Main()
   {
      Console.WriteLine(DoSocketGet("localhost"));
   }
 }

Commenti

Il addressFamily parametro specifica lo schema di indirizzamento usato dalla Socket classe , il socketType parametro specifica il tipo della Socket classe e il protocolType parametro specifica il protocollo utilizzato da Socket. I tre parametri non sono indipendenti. Alcune famiglie di indirizzi limitano i protocolli che possono essere usati con essi e spesso il Socket tipo è implicito nel protocollo. Se la combinazione di famiglia di indirizzi, Socket tipo e tipo di protocollo genera un tipo di protocollo non valido Socket, questo costruttore genera un'eccezione SocketException.

Nota

Se questo costruttore genera un'eccezione SocketException, 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.

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

.NET 9 e altre versioni
Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0