다음을 통해 공유


Socket.DontFragment 속성

정의

Socket에서 IP(인터넷 프로토콜) 데이터그램의 조각화를 허용하는지 여부를 나타내는 값을 가져오거나 설정합니다.

public:
 property bool DontFragment { bool get(); void set(bool value); };
public bool DontFragment { get; set; }
member this.DontFragment : bool with get, set
Public Property DontFragment As Boolean

속성 값

trueSocket 데이터그램 조각화를 허용하지 않으면 이고, false그렇지 않으면 입니다. 기본값은 true입니다.

예외

소켓이 패밀리에 InterNetwork 없습니다.

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 DontFragment 속성입니다.

static void ConfigureUdpSocket(Socket^ udpSocket)
{

    // Set the Don't Fragment flag.
    udpSocket->DontFragment = true;
     
    // Enable broadcast.
    udpSocket->EnableBroadcast = true;
     
    // Disable multicast loopback.
    udpSocket->MulticastLoopback = false;
    Console::WriteLine("Udp Socket configured:");
    Console::WriteLine("  DontFragment {0}", 
        udpSocket->DontFragment);
    Console::WriteLine("  EnableBroadcast {0}", 
        udpSocket->EnableBroadcast);
    Console::WriteLine("  MulticastLoopback {0}", 
        udpSocket->MulticastLoopback);
}
static void ConfigureUdpSocket(Socket udpSocket)
{
    // set the Don't Fragment flag.
    udpSocket.DontFragment = true;
    // Enable broadcast.
    udpSocket.EnableBroadcast = true;

    // Disable multicast loopback.
    udpSocket.MulticastLoopback = false;

    Console.WriteLine("Udp Socket configured:");
    Console.WriteLine($"  DontFragment {udpSocket.DontFragment}");
    Console.WriteLine($"  EnableBroadcast {udpSocket.EnableBroadcast}");
    Console.WriteLine($"  MulticastLoopback {udpSocket.MulticastLoopback}");
}

설명

데이터그램의 크기가 전송 매체의 MTU(최대 전송 단위)를 초과하는 경우 조각화가 필요합니다. 데이터그램은 전송 호스트(모든 인터넷 프로토콜 버전) 또는 중간 라우터(인터넷 프로토콜 버전 4에만 해당)에 의해 조각화될 수 있습니다. 데이터그램을 조각화해야 하고 DontFragment 옵션을 설정하면 데이터그램이 삭제되고 ICMP(Internet Control Message Protocol) 오류 메시지가 데이터그램의 보낸 사람에게 다시 전송됩니다.

TCP(Transmission Control Protocol) 소켓에서 이 속성을 설정해도 아무런 효과가 없습니다.

적용 대상