SocketType Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает тип сокета, являющегося экземпляром класса Socket.
public enum class SocketType
public enum SocketType
type SocketType =
Public Enum SocketType
- Наследование
Поля
Dgram | 2 | Поддерживает датаграммы — ненадежные сообщения с фиксированной (обычно малой) максимальной длиной, передаваемые без установления подключения. Возможны потеря и дублирование сообщений, а также их получение не в том порядке, в котором они отправлены. Объект Socket типа Dgram не требует установки подключения до приема и передачи данных и может обеспечивать связь со множеством одноранговых узлов.
Dgramиспользует протокол datagram ( |
Raw | 3 | Поддерживает доступ к основному транспортному протоколу. Используя Raw, можно организовать связь с применением протоколов, таких как протокол ICMP ( |
Rdm | 4 | Поддерживает ориентированную на сообщения связь без установления подключения с надежной доставкой сообщений и сохранением границ сообщений в данных. Сообщения RDM (Reliably-Delivered Messages — сообщения с надежной доставкой) принимаются без получения дубликатов и в порядке отправки. Кроме того, отправителю отправляется уведомление в случае потери сообщений. Если инициализируется сокет Socket типа Rdm, нет необходимости в установлении подключения к удаленному узлу перед началом отправки или получения данных. Используя тип Rdm, можно организовать связь со множеством узелов. |
Seqpacket | 5 | Обеспечивает надежную двустороннюю передачу упорядоченных байтовых потоков через сеть в режиме с установлением подключения. Seqpacket не дублирует данные и сохраняет границы в потоке данных. Объект Socket типа Seqpacket взаимодействует с одним узелом и требует установления подключения к удаленному узлу перед началом передачи данных. |
Stream | 1 | Поддерживает надежные двусторонние байтовые потоки в режиме с установлением подключения, без дублирования данных и без сохранения границ данных. Объект Socket этого типа взаимодействует с одним узлом и требует установления подключения к удаленному узлу перед началом передачи данных.
Streamиспользует протокол управления передачей ( |
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.