SocketType Перечисление

Определение

Указывает тип сокета, который представляет экземпляр класса Socket.

public enum class SocketType
public enum SocketType
type SocketType = 
Public Enum SocketType
Наследование
SocketType

Поля

Имя Значение Описание
Unknown -1

Указывает неизвестный Socket тип.

Stream 1

Поддерживает надежные двусторонние потоки байтов на основе подключений без дублирования данных и без сохранения границ. Этот Socket тип взаимодействует с одним одноранговым узлом и требует подключения удаленного узла, прежде чем начать взаимодействие. Streamиспользует протокол управления передачей (ProtocolType.Tcp) и AddressFamilyсемейство адресов .InterNetwork

Dgram 2

Поддерживает диаграммы данных, которые являются ненадежными, ненадежными сообщениями фиксированной (обычно небольшой) максимальной длины. Сообщения могут быть потеряны или дублируются и могут поступать из порядка. Socket Тип Dgram не требует подключения перед отправкой и получением данных и может взаимодействовать с несколькими одноранговыми узлами. Dgramиспользует протокол datagram (ProtocolType.Udp) и AddressFamilyсемейство адресов .InterNetwork

Raw 3

Поддерживает доступ к базовому протоколу транспорта. Используя Rawпротоколы, такие как протоколы управления интернет-сообщениями (ProtocolType.Icmp) и протокол управления группами Интернета (ProtocolType.Igmp). Приложение должно предоставить полный IP-заголовок при отправке. Полученные диаграммы данных возвращаются с заголовком IP и параметрами без изменений.

Rdm 4

Поддерживает бессерверные, ориентированные на сообщения сообщения, надежно доставленные сообщения и сохраняя границы сообщений в данных. Сообщения Rdm (надежно доставленные сообщения) поступают неупорядоченными и упорядоченными. Кроме того, отправитель уведомляется, если сообщения потеряны. При инициализации использования Socketне требуется удаленное Rdm подключение узла перед отправкой и получением данных. С помощью Rdmэтого приложения можно взаимодействовать с несколькими одноранговыми узлами.

Seqpacket 5

Обеспечивает двусторонняя передача упорядоченных потоков байтов по сети с ориентацией на подключение и надежную двухсторонняя передача байтов. Seqpacket не дублирует данные и сохраняет границы в потоке данных. Socket Тип Seqpacket взаимодействует с одним одноранговым узлом и требует подключения удаленного узла, прежде чем начать взаимодействие.

Примеры

В следующем примере конструктор SocketType.Stream используется Socket в качестве параметра.

//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

Комментарии

Перед отправкой Socket и получением данных необходимо сначала создать с помощью AddressFamily, a SocketTypeи a ProtocolType. Перечисление SocketType предоставляет несколько вариантов определения типа Socket , который вы планируете открыть.

Note

SocketType иногда неявно указывает, что ProtocolType используется в объекте AddressFamily. Например, если System.Net.Sockets.SocketType это SocketType.Dgramтак, System.Net.Sockets.ProtocolType всегда ProtocolType.Udp. System.Net.Sockets.SocketType Когда есть SocketType.Stream, System.Net.Sockets.ProtocolType всегда ProtocolType.Tcp. Если вы пытаетесь создать несовместимую Socket комбинацию, Socket вызывает исключение SocketException.

Применяется к

См. также раздел