Socket.DontFragment 属性

定义

获取或设置一个值,该值指定 Socket 是否允许将 Internet 协议 (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

属性值

true Socket如果 不允许数据报碎片,则为 ;否则为 false。 默认值为 true

例外

套接字不在系列中 InterNetwork

尝试访问套接字时出错。

示例

下面的代码示例演示如何使用 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) 时,需要碎片。 数据报可能由发送主机 (所有 Internet 协议版本) 或中间路由器 (Internet 协议版本 4 仅) 分段。 如果必须对数据报进行分段并 DontFragment 设置 选项,则会丢弃数据报,并将 Internet 控制消息协议 (ICMP) 错误消息发送回数据报的发送方。

在 TCP) 套接字 (传输控制协议上设置此属性不起作用。

适用于