다음을 통해 공유


SocketType 열거형

정의

Socket 클래스의 인스턴스가 나타내는 소켓의 종류를 지정합니다.

public enum class SocketType
public enum SocketType
type SocketType = 
Public Enum SocketType
상속
SocketType

필드

Dgram 2

고정된 최대 길이(대개 작음)의 신뢰할 수 없고 연결 없는 메시지인 데이터그램을 지원합니다. 메시지가 손실되거나 중복될 수 있으며 메시지 순서가 잘못될 수도 있습니다. Socket 종류의 Dgram은 데이터를 보내고 받기 전에 연결하지 않고도 여러 피어와 통신할 수 있습니다. Dgram에서는 Datagram 프로토콜(ProtocolType.Udp) 및 주소InterNetwork 패밀리를 AddressFamily사용합니다.

Raw 3

내부 전송 프로토콜에 대한 액세스를 지원합니다. Raw를 사용하면 Internet Control Message Protocol(ProtocolType.Icmp) 및 Internet Group Management Protocol(ProtocolType.Igmp) 같은 프로토콜을 사용하여 통신할 수 있습니다. 애플리케이션은 전송 시 전체 IP 헤더를 제공해야 합니다. 받은 데이터그램은 변경되지 않은 IP 헤더 및 옵션과 함께 반환됩니다.

Rdm 4

연결 없고, 메시지 지향적이고, 신뢰성 있게 배달되는 메시지를 지원하고, 데이터 내의 메시지 경계를 유지합니다. RDM(Reliably Delivered Message) 메시지는 복제되지 않은 상태로 순서에 따라 도착합니다. 또한 메시지가 손실되면 보낸 사람에게 알립니다. Rdm을 사용하여 Socket을 초기화하면 데이터를 보내고 받기 전에 원격 호스트에 연결하지 않아도 됩니다. 또한 Rdm을 사용하면 여러 피어와 통신할 수 있습니다.

Seqpacket 5

네트워크를 통해 연결 지향적이고, 양방향으로 신뢰성 있게 전송되며, 순서가 지정된 바이트 스트림을 제공합니다. Seqpacket은 데이터를 중복하지 않고 데이터 스트림 내의 경계를 유지합니다. Seqpacket 종류의 Socket은 단일 피어와 통신하며 통신을 시작하기 전에 원격 호스트에 연결해야 합니다.

Stream 1

데이터 중복이나 경계 유지 없이 신뢰성 있는 양방향 연결 기반의 바이트 스트림을 지원합니다. 이 종류의 Socket은 단일 피어와 통신하며 이 소켓을 사용할 경우 통신을 시작하기 전에 원격 호스트에 연결해야 합니다. Stream에서는 전송 제어 프로토콜(ProtocolType.Tcp) 및 주소InterNetwork 패밀리를 AddressFamily사용합니다.

Unknown -1

알 수 없는 Socket 종류를 지정합니다.

예제

다음 예제에서는 를 생성자에 대한 매개 변수 Socket 로 사용합니다SocketType.Stream.

//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 데이터를 보내고 받기 전에 먼저 , 및 ProtocolTypeSocketType사용하여 AddressFamily만들어야 합니다. 열거형은 SocketType 열려는 형식 Socket 을 정의하기 위한 몇 가지 옵션을 제공합니다.

참고

SocketType 경우에 따라 암시적으로 내에서 사용되는 를 ProtocolTypeAddressFamily나타냅니다. 예를 들어 가 인 System.Net.Sockets.SocketType 경우 는 SocketType.DgramSystem.Net.Sockets.ProtocolType 항상 ProtocolType.Udp입니다. 이 이 System.Net.Sockets.SocketTypeSocketType.StreamSystem.Net.Sockets.ProtocolType 항상 ProtocolType.Tcp입니다. 호환되지 않는 조합 Socket 으로 을 Socket 만들려고 하면 가 throw됩니다SocketException.

적용 대상

추가 정보