Поделиться через


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использует протокол управления передачей (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, SocketTypeи ProtocolType. Перечисление SocketType предоставляет несколько вариантов для определения типа Socket , который вы планируете открыть.

Примечание

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.

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

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