Socket.ExclusiveAddressUse Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit une valeur qui indique si le Socket seul processus autorise la liaison à un port.
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
Valeur de propriété
true si le Socket seul socket autorise la liaison à un port spécifique ; sinon, false. La valeur par défaut concerne true Windows Server 2003 et Windows XP et les versions ultérieures.
Exceptions
Une erreur s’est produite lors de la tentative d’accès au socket.
Il Socket a été fermé.
Bind(EndPoint) a été appelé pour cela Socket.
Exemples
L’exemple de code suivant illustre l’utilisation de la ExclusiveAddressUse propriété.
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("");
}
Remarques
Si ExclusiveAddressUse c’est falsele cas, plusieurs sockets peuvent utiliser la Bind méthode pour établir une liaison à un port spécifique ; toutefois, un seul des sockets peut effectuer des opérations sur le trafic réseau envoyé au port. Si plusieurs sockets tentent d’utiliser la Bind(EndPoint) méthode pour établir une liaison à un port particulier, celui avec l’adresse IP la plus spécifique gère le trafic réseau envoyé à ce port.
Si ExclusiveAddressUse c’est truele cas, la première utilisation de la Bind méthode pour tenter de lier à un port particulier, quelle que soit l’adresse IP (Internet Protocol), réussit ; toutes les utilisations suivantes de la Bind méthode pour tenter de lier à ce port échouent jusqu’à ce que le socket lié d’origine soit détruit.
Cette propriété doit être définie avant Bind d’être appelée ; sinon, une InvalidOperationException exception est levée.