Socket.ExclusiveAddressUse プロパティ
アセンブリ: System (system.dll 内)

Dim instance As Socket Dim value As Boolean value = instance.ExclusiveAddressUse instance.ExclusiveAddressUse = value
/** @property */ public boolean get_ExclusiveAddressUse () /** @property */ public void set_ExclusiveAddressUse (boolean value)
public function get ExclusiveAddressUse () : boolean public function set ExclusiveAddressUse (value : boolean)
Socket で 1 つのソケットだけに特定のポートのバインドを許可する場合は true。それ以外の場合は false。Windows Server 2003 および Windows XP Service Pack 2 では、既定値は true です。他のすべてのバージョンでは false です。


ExclusiveAddressUse が false の場合、複数のソケットが Bind メソッドを使用して特定のポートをバインドできます。ただし、ポートに送信されるネットワーク トラフィックの操作を実行できるのはそのソケットの内 1 つだけです。複数のソケットが Bind メソッドを使用して特定のポートをバインドしようとした場合は、より具体的な IP アドレスを持ったソケットがポートに送信されるネットワーク トラフィックを処理します。
ExclusiveAddressUse が true の場合、Bind メソッドを使用して特定のポートをバインドしようとすると、インターネット プロトコル (IP) アドレスに関係なく、最初は成功します。それ以降に Bind メソッドを使用してそのポートをバインドしようとすると、元のバインドしたソケットが破棄されるまですべて失敗します。
このプロパティは、Bind が呼び出される前に設定される必要があります。そうでない場合は InvalidOperationException がスローされます。
Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003 プラットフォームメモ : Service Pack 2 以降では、このプロパティの既定値は true です。
Windows Server 2003 プラットフォームメモ : このプロパティの既定値は true です。
Windows Server 2003 プラットフォームメモ : 複数のソケットに同じ EndPoint のバインドを許可するには、該当するすべてのソケットに対して ExclusiveAddressUse を false に設定し、ReuseAddress を true に設定する必要があります。
Windows 2000 プラットフォームメモ : アプリケーションでこのプロパティを使用するには、管理者として実行する必要があります。
Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003 プラットフォームメモ : Service Pack 1 では、アプリケーションでこのプロパティを使用するには、管理者として実行する必要があります。

ExclusiveAddressUse プロパティの使用方法を示すコード例を次に示します。
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 {0}", tcpSocket.ExclusiveAddressUse); Console.WriteLine(" LingerState {0}, {1}", tcpSocket.LingerState.Enabled, tcpSocket.LingerState.LingerTime); Console.WriteLine(" NoDelay {0}", tcpSocket.NoDelay); Console.WriteLine(" ReceiveBufferSize {0}", tcpSocket.ReceiveBufferSize); Console.WriteLine(" ReceiveTimeout {0}", tcpSocket.ReceiveTimeout); Console.WriteLine(" SendBufferSize {0}", tcpSocket.SendBufferSize); Console.WriteLine(" SendTimeout {0}", tcpSocket.SendTimeout); Console.WriteLine(" Ttl {0}", tcpSocket.Ttl); Console.WriteLine(" IsBound {0}", tcpSocket.IsBound); Console.WriteLine(""); }
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 = gcnew 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 {0}", tcpSocket->ExclusiveAddressUse); Console::WriteLine(" LingerState {0}, {1}", tcpSocket->LingerState->Enabled, tcpSocket->LingerState->LingerTime); Console::WriteLine(" NoDelay {0}", tcpSocket->NoDelay); Console::WriteLine(" ReceiveBufferSize {0}", tcpSocket->ReceiveBufferSize); Console::WriteLine(" ReceiveTimeout {0}", tcpSocket->ReceiveTimeout); Console::WriteLine(" SendBufferSize {0}", tcpSocket->SendBufferSize); Console::WriteLine(" SendTimeout {0}", tcpSocket->SendTimeout); Console::WriteLine(" Ttl {0}", tcpSocket->Ttl); Console::WriteLine(" IsBound {0}", tcpSocket->IsBound); Console::WriteLine(""); }

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からSocket.ExclusiveAddressUse プロパティを検索する場合は、下記のリンクをクリックしてください。

- Socket.ExclusiveAddressUse プロパティのページへのリンク