Condividi tramite


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

Dgram 2

Supporta datagrammi, che sono messaggi senza connessione, non affidabili di lunghezza massima fissa (generalmente piccola). I messaggi potrebbero essere persi o duplicati e potrebbero arrivare non nell'ordine corretto. Un oggetto Socket di tipo Dgram non richiede alcuna connessione prima dell'invio e della ricezione dei dati ed è in grado di 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. L'uso di Raw consente di comunicare tramite protocolli come Internet Control Message Protocol (ProtocolType.Icmp) e Internet Group Management Protocol (ProtocolType.Igmp). È necessario che nell'applicazione venga fornita un'intestazione IP completa durante l'invio. I datagrammi ricevuti vengono restituiti con l'intestazione IP e le opzioni non modificate.

Rdm 4

Supporta messaggi senza connessione, orientati ai messaggi e consegnati in modo affidabile; inoltre conserva i limiti del messaggio nei dati. I messaggi Rdm ( Reliably-Delivered Messages) arrivano non duplicati e nell'ordine corretto. Inoltre, il mittente viene avvisato se i messaggi vengono persi. Se si inizializza un Socket utilizzando Rdm, non sarà necessario stabilire una connessione all'host remoto prima di inviare e ricevere dati. Con Rdm è possibile comunicare con più peer.

Seqpacket 5

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

Stream 1

Supporta flussi di byte affidabili, a due vie e orientati alla connessione senza la duplicazione di dati e senza la conservazione dei limiti. Un oggetto Socket di questo tipo comunica con un unico peer e richiede una connessione all'host remoto prima di poter avviare una comunicazione. Streamusa il protocollo di controllo di trasmissione (ProtocolType.Tcp) e la AddressFamilyfamiglia di indirizzi .InterNetwork

Unknown -1

Specifica un tipo di Socket sconosciuto.

Esempio

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

//Creates the Socket for sending data over TCP.
Socket^ s = gcnew 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.
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

Socket Prima di poter inviare e ricevere dati, è necessario prima di tutto creare un AddressFamilyoggetto , un SocketTypee un ProtocolTypeoggetto . L'enumerazione SocketType offre diverse opzioni per definire il tipo di Socket che si intende aprire.

Nota

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

Si applica a

Vedi anche