SocketType Enumerazione

Definizione

Specifica il tipo di socket rappresentato da un'istanza della classe Socket.

public enum class SocketType
public enum SocketType
type SocketType = 
Public Enum SocketType
Ereditarietà
SocketType

Campi

Nome Valore Descrizione
Unknown -1

Specifica un tipo sconosciuto Socket .

Stream 1

Supporta flussi di byte affidabili, bidirezionali e basati sulla connessione senza la duplicazione dei dati e senza la conservazione dei limiti. Un Socket oggetto di questo tipo comunica con un singolo peer e richiede una connessione host remota prima di poter iniziare la comunicazione. Streamutilizza il protocollo transmission control (ProtocolType.Tcp) e la AddressFamilyfamiglia di indirizzi .InterNetwork

Dgram 2

Supporta i datagrammi, che non sono connessioni, messaggi non affidabili di lunghezza massima fissa (in genere piccola). I messaggi potrebbero essere persi o duplicati e potrebbero arrivare non in ordine. Un Socket di tipo Dgram non richiede alcuna connessione prima di inviare e ricevere dati e può comunicare con più peer. Dgramusa il protocollo Datagram (ProtocolType.Udp) e la AddressFamilyfamiglia di indirizzi .InterNetwork

Raw 3

Supporta l'accesso al protocollo di trasporto sottostante. Usando Raw, è possibile comunicare usando protocolli come Internet Control Message Protocol (ProtocolType.Icmp) e Internet Group Management Protocol (ProtocolType.Igmp). L'applicazione deve fornire un'intestazione IP completa durante l'invio. I datagrammi ricevuti restituiscono con l'intestazione IP e le opzioni intatte.

Rdm 4

Supporta messaggi senza connessione, orientati ai messaggi, recapitati in modo affidabile e mantiene i limiti dei messaggi nei dati. I messaggi Rdm (Messaggi recapitati in modo affidabile) arrivano non replicati e in ordine. Inoltre, il mittente riceve una notifica se i messaggi vengono persi. Se si inizializza un Socket oggetto utilizzando Rdm, non è necessaria una connessione host remota prima di inviare e ricevere dati. Con Rdmè possibile comunicare con più peer.

Seqpacket 5

Fornisce il trasferimento bidirezionale orientato alla connessione di flussi di byte ordinati in una rete. Seqpacket non duplica i dati e mantiene i limiti all'interno del flusso di dati. Un Socket di tipo Seqpacket comunica con un singolo peer e richiede una connessione host remota prima di poter iniziare la comunicazione.

Esempio

Nell'esempio seguente viene SocketType.Stream usato come parametro per il Socket costruttore .

//Creates the Socket for sending data over TCP.
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
   ProtocolType.Tcp );

// Connects to host using IPEndPoint.
s.Connect(EPhost);
if (!s.Connected)
{
   strRetPage = "Unable to connect to host";
}
// Use the SelectWrite enumeration to obtain Socket status.
 if(s.Poll(-1, SelectMode.SelectWrite)){
      Console.WriteLine("This Socket is writable.");
 }
 else if (s.Poll(-1, SelectMode.SelectRead)){
       Console.WriteLine("This Socket is readable." );
 }
 else if (s.Poll(-1, SelectMode.SelectError)){
      Console.WriteLine("This Socket has an error.");
 }
'Creates the Socket for sending data over TCP.
Dim s As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)

' Connects to host using IPEndPoint.
s.Connect(EPhost)
If Not s.Connected Then
   strRetPage = "Unable to connect to host"
End If
' Use the SelectWrite enumeration to obtain Socket status.
If s.Poll(- 1, SelectMode.SelectWrite) Then
   Console.WriteLine("This Socket is writable.")
Else
   If s.Poll(- 1, SelectMode.SelectRead) Then
      Console.WriteLine(("This Socket is readable. "))
   Else
      If s.Poll(- 1, SelectMode.SelectError) Then
         Console.WriteLine("This Socket has an error.")
      End If
   End If 
End If

Commenti

Prima che un Socket oggetto possa inviare e ricevere dati, è necessario creare un AddressFamilyoggetto , SocketTypeun oggetto e un oggetto ProtocolType. L'enumerazione SocketType offre diverse opzioni per definire il tipo di Socket che si intende aprire.

Note

SocketType talvolta indica in modo implicito quale ProtocolType viene usato all'interno di un oggetto AddressFamily. Ad esempio, quando System.Net.Sockets.SocketType è SocketType.Dgram, è System.Net.Sockets.ProtocolType sempre ProtocolType.Udp. System.Net.Sockets.SocketType Quando è SocketType.Stream, è System.Net.Sockets.ProtocolType sempre ProtocolType.Tcp. Se si tenta di creare un oggetto Socket con una combinazione incompatibile, Socket genera un'eccezione SocketException.

Si applica a

Vedi anche