Socket.ExclusiveAddressUse Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
Özellik Değeri
true
yalnızca bir yuvanın Socket belirli bir bağlantı noktasına bağlanmasına izin veriyorsa; aksi takdirde , false
. Varsayılan, true
Windows Server 2003 ve Windows XP Service Pack 2 false
ve diğer tüm sürümler içindir.
Özel durumlar
Yuvaya erişmeye çalışılırken bir hata oluştu.
Kapatılmış Socket .
Bind(EndPoint) bu Socketiçin çağrıldı.
Örnekler
Aşağıdaki kod örneği özelliğinin ExclusiveAddressUse kullanımını gösterir.
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("");
}
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("");
}
Açıklamalar
ise ExclusiveAddressUsefalse
, birden çok yuva belirli bir bağlantı noktasına bağlanmak için yöntemini kullanabilir Bind ; ancak yuvalardan yalnızca biri bağlantı noktasına gönderilen ağ trafiğinde işlem gerçekleştirebilir. Belirli bir bağlantı noktasına bağlanmak için birden fazla yuva yöntemini kullanmayı Bind(EndPoint) denerse, daha özel IP adresine sahip olan, bu bağlantı noktasına gönderilen ağ trafiğini işler.
ise ExclusiveAddressUsetrue
, İnternet Protokolü (IP) adresinden Bind bağımsız olarak belirli bir bağlantı noktasına bağlanmaya çalışmak için yönteminin ilk kullanımı başarılı olur; yöntemin Bind bu bağlantı noktasına bağlanmaya yönelik sonraki tüm kullanımları özgün bağlı yuva yok edilene kadar başarısız olur.
Bu özellik çağrılmadan önce Bind ayarlanmalıdır; aksi takdirde bir InvalidOperationException oluşturulur.