SocketType 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Socket 클래스의 인스턴스가 나타내는 소켓의 종류를 지정합니다.
public enum class SocketType
public enum SocketType
type SocketType =
Public Enum SocketType
- 상속
필드
Dgram | 2 | 고정된 최대 길이(대개 작음)의 신뢰할 수 없고 연결 없는 메시지인 데이터그램을 지원합니다. 메시지가 손실되거나 중복될 수 있으며 메시지 순서가 잘못될 수도 있습니다.
Socket 종류의 Dgram은 데이터를 보내고 받기 전에 연결하지 않고도 여러 피어와 통신할 수 있습니다.
Dgram에서는 Datagram 프로토콜( |
Raw | 3 | 내부 전송 프로토콜에 대한 액세스를 지원합니다.
Raw를 사용하면 Internet Control Message Protocol( |
Rdm | 4 | 연결 없고, 메시지 지향적이고, 신뢰성 있게 배달되는 메시지를 지원하고, 데이터 내의 메시지 경계를 유지합니다. RDM(Reliably Delivered Message) 메시지는 복제되지 않은 상태로 순서에 따라 도착합니다. 또한 메시지가 손실되면 보낸 사람에게 알립니다. Rdm을 사용하여 Socket을 초기화하면 데이터를 보내고 받기 전에 원격 호스트에 연결하지 않아도 됩니다. 또한 Rdm을 사용하면 여러 피어와 통신할 수 있습니다. |
Seqpacket | 5 | 네트워크를 통해 연결 지향적이고, 양방향으로 신뢰성 있게 전송되며, 순서가 지정된 바이트 스트림을 제공합니다. Seqpacket은 데이터를 중복하지 않고 데이터 스트림 내의 경계를 유지합니다. Seqpacket 종류의 Socket은 단일 피어와 통신하며 통신을 시작하기 전에 원격 호스트에 연결해야 합니다. |
Stream | 1 | 데이터 중복이나 경계 유지 없이 신뢰성 있는 양방향 연결 기반의 바이트 스트림을 지원합니다. 이 종류의 Socket은 단일 피어와 통신하며 이 소켓을 사용할 경우 통신을 시작하기 전에 원격 호스트에 연결해야 합니다.
Stream에서는 전송 제어 프로토콜( |
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 데이터를 보내고 받기 전에 먼저 , 및 ProtocolType을 SocketType사용하여 AddressFamily만들어야 합니다. 열거형은 SocketType 열려는 형식 Socket 을 정의하기 위한 몇 가지 옵션을 제공합니다.
참고
SocketType 경우에 따라 암시적으로 내에서 사용되는 를 ProtocolTypeAddressFamily나타냅니다. 예를 들어 가 인 System.Net.Sockets.SocketType 경우 는 SocketType.DgramSystem.Net.Sockets.ProtocolType 항상 ProtocolType.Udp입니다. 이 이 System.Net.Sockets.SocketType 면 SocketType.Stream는 System.Net.Sockets.ProtocolType 항상 ProtocolType.Tcp입니다. 호환되지 않는 조합 Socket 으로 을 Socket 만들려고 하면 가 throw됩니다SocketException.
적용 대상
추가 정보
.NET