SocketType Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает тип сокета, который представляет экземпляр класса Socket.
public enum class SocketType
public enum SocketType
type SocketType =
Public Enum SocketType
- Наследование
Поля
| Имя | Значение | Описание |
|---|---|---|
| Unknown | -1 | Указывает неизвестный Socket тип. |
| Stream | 1 | Поддерживает надежные двусторонние потоки байтов на основе подключений без дублирования данных и без сохранения границ. Этот Socket тип взаимодействует с одним одноранговым узлом и требует подключения удаленного узла, прежде чем начать взаимодействие.
Streamиспользует протокол управления передачей ( |
| Dgram | 2 | Поддерживает диаграммы данных, которые являются ненадежными, ненадежными сообщениями фиксированной (обычно небольшой) максимальной длины. Сообщения могут быть потеряны или дублируются и могут поступать из порядка.
Socket Тип Dgram не требует подключения перед отправкой и получением данных и может взаимодействовать с несколькими одноранговыми узлами.
Dgramиспользует протокол datagram ( |
| Raw | 3 | Поддерживает доступ к базовому протоколу транспорта. Используя Rawпротоколы, такие как протоколы управления интернет-сообщениями ( |
| 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.