SocketType Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica o tipo de soquete que uma instância da classe Socket representa.
public enum class SocketType
public enum SocketType
type SocketType =
Public Enum SocketType
- Herança
Campos
| Nome | Valor | Description |
|---|---|---|
| Unknown | -1 | Especifica um tipo desconhecido Socket . |
| Stream | 1 | Dá suporte a fluxos de bytes confiáveis, bidirecionais e baseados em conexão sem a duplicação de dados e sem preservação de limites. Um Socket desse tipo se comunica com um único par e requer uma conexão de host remoto antes que a comunicação possa começar.
Streamusa o Protocolo de Controle de Transmissão ( |
| Dgram | 2 | Dá suporte a datagrams, que são mensagens não confiáveis e sem conexão de um comprimento máximo fixo (normalmente pequeno). As mensagens podem ser perdidas ou duplicadas e podem chegar fora de ordem. Um Socket tipo Dgram não requer nenhuma conexão antes de enviar e receber dados e pode se comunicar com vários pares.
Dgramusa o Protocolo datagram ( |
| Raw | 3 | Dá suporte ao acesso ao protocolo de transporte subjacente. Usando Raw, você pode se comunicar usando protocolos como o Protocolo de Mensagem de Controle de Internet ( |
| Rdm | 4 | Dá suporte a mensagens sem conexão, orientadas a mensagens, fornecidas de forma confiável e preserva os limites de mensagens nos dados. As mensagens rdm (mensagens entregues de forma confiável) chegam indevidamente e em ordem. Além disso, o remetente será notificado se as mensagens forem perdidas. Se você inicializar um Socket uso Rdm, não precisará de uma conexão de host remoto antes de enviar e receber dados. Com Rdm, você pode se comunicar com vários pares. |
| Seqpacket | 5 | Fornece transferência bidirecional confiável e orientada à conexão de fluxos de bytes ordenados em uma rede. Seqpacket não duplica dados e preserva limites dentro do fluxo de dados. Um Socket tipo se comunica com um único par e requer uma conexão de host remoto antes que Seqpacket a comunicação possa começar. |
Exemplos
O exemplo a seguir usa SocketType.Stream como parâmetro para o Socket construtor.
//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
Comentários
Antes que um Socket possa enviar e receber dados, ele deve primeiro ser criado usando um AddressFamily, um SocketTypee um ProtocolType. A SocketType enumeração fornece várias opções para definir o tipo que Socket você pretende abrir.
Note
SocketType às vezes indica implicitamente o que ProtocolType é usado dentro de um AddressFamily. Por exemplo, quando o System.Net.Sockets.SocketType é SocketType.Dgram, o System.Net.Sockets.ProtocolType é sempre ProtocolType.Udp. Quando o System.Net.Sockets.SocketType é SocketType.Stream, o System.Net.Sockets.ProtocolType é sempre ProtocolType.Tcp. Se você tentar criar uma Socket combinação com uma combinação incompatível, Socket gerará um SocketException.