Freigeben über


Socket.ExclusiveAddressUse Eigenschaft

Definition

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob nur Socket ein Prozess an einen Port gebunden werden kann.

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

Eigenschaftswert

true wenn nur Socket ein Socket an einen bestimmten Port gebunden werden kann, andernfalls false. Der Standardwert ist true für Windows Server 2003 und Windows XP und neuere Versionen.

Ausnahmen

Beim Versuch, auf den Socket zuzugreifen, ist ein Fehler aufgetreten.

Das Socket wurde geschlossen.

Beispiele

Im folgenden Codebeispiel wird die Verwendung der ExclusiveAddressUse Eigenschaft veranschaulicht.

static void ConfigureTcpSocket(Socket tcpSocket)
{
    // Don't allow another socket to bind to this port.
    tcpSocket.ExclusiveAddressUse = true;

    // The socket will linger for 10 seconds after
    // Socket.Close is called.
    tcpSocket.LingerState = new LingerOption (true, 10);

    // Disable the Nagle Algorithm for this tcp socket.
    tcpSocket.NoDelay = true;

    // Set the receive buffer size to 8k
    tcpSocket.ReceiveBufferSize = 8192;

    // Set the timeout for synchronous receive methods to
    // 1 second (1000 milliseconds.)
    tcpSocket.ReceiveTimeout = 1000;

    // Set the send buffer size to 8k.
    tcpSocket.SendBufferSize = 8192;

    // Set the timeout for synchronous send methods
    // to 1 second (1000 milliseconds.)
    tcpSocket.SendTimeout = 1000;

    // Set the Time To Live (TTL) to 42 router hops.
    tcpSocket.Ttl = 42;

    Console.WriteLine("Tcp Socket configured:");

    Console.WriteLine($"  ExclusiveAddressUse {tcpSocket.ExclusiveAddressUse}");

    Console.WriteLine($"  LingerState {tcpSocket.LingerState.Enabled}, {tcpSocket.LingerState.LingerTime}");

    Console.WriteLine($"  NoDelay {tcpSocket.NoDelay}");

    Console.WriteLine($"  ReceiveBufferSize {tcpSocket.ReceiveBufferSize}");

    Console.WriteLine($"  ReceiveTimeout {tcpSocket.ReceiveTimeout}");

    Console.WriteLine($"  SendBufferSize {tcpSocket.SendBufferSize}");

    Console.WriteLine($"  SendTimeout {tcpSocket.SendTimeout}");

    Console.WriteLine($"  Ttl {tcpSocket.Ttl}");

    Console.WriteLine($"  IsBound {tcpSocket.IsBound}");

    Console.WriteLine("");
}

Hinweise

Wenn ExclusiveAddressUse ja false, können mehrere Sockets die Bind Methode verwenden, um eine Bindung an einen bestimmten Port durchzuführen. Allerdings kann nur einer der Sockets Vorgänge für den Netzwerkdatenverkehr ausführen, der an den Port gesendet wird. Wenn mehr als ein Socket versucht, die Bind(EndPoint) Methode zum Binden an einen bestimmten Port zu verwenden, verarbeitet die methode mit der spezifischeren IP-Adresse den an diesen Port gesendeten Netzwerkdatenverkehr.

Wenn ExclusiveAddressUse dies der erste Versuch der Bind Methode isttrue, eine Bindung an einen bestimmten Port zu versuchen, unabhängig von der IP-Adresse (Internet Protocol) erfolgreich. Alle nachfolgenden Verwendungen der Bind Methode, um eine Bindung an diesen Port zu versuchen, schlägt fehl, bis der ursprüngliche gebundene Socket zerstört wird.

Diese Eigenschaft muss festgelegt werden, bevor Bind sie aufgerufen wird. Andernfalls wird ein InvalidOperationException Fehler ausgelöst.

Gilt für: