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

Определение

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

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

Поля

Dgram 2

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

Raw 3

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

Rdm 4

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

Seqpacket 5

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

Stream 1

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

Unknown -1

Задает неизвестный тип Socket.

Примеры

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

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

Комментарии

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

Примечание

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

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

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