Socket.NoDelay Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
public:
property bool NoDelay { bool get(); void set(bool value); };
public bool NoDelay { get; set; }
member this.NoDelay : bool with get, set
Public Property NoDelay As Boolean
Egenskapsvärde
false
Socket om använder Nagle-algoritmen, annars . true Standardvärdet är false.
Undantag
Ett fel uppstod vid försök att komma åt Socket.
Har Socket stängts.
Exempel
Följande kodexempel visar hur egenskapen används NoDelay .
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("");
}
Kommentarer
Nagle-algoritmen är utformad för att minska nätverkstrafiken genom att orsaka att socketen buffrar små paket och sedan kombinerar och skickar dem i ett paket under vissa omständigheter. Ett TCP-paket består av 40 byte sidhuvud plus de data som skickas. När små datapaket skickas med TCP kan de kostnader som uppstår från TCP-huvudet bli en betydande del av nätverkstrafiken. I kraftigt belastade nätverk kan överbelastningen till följd av den här belastningen leda till förlorade datagram och återöverföringar, samt överdriven spridningstid som orsakas av överbelastning. Nagle-algoritmen hämmar sändningen av nya TCP-segment när nya utgående data anländer från användaren om tidigare överförda data på anslutningen förblir obemärkta.
De flesta nätverksprogram bör använda Nagle-algoritmen.
Att ange den här egenskapen på en UDP-socket (User Datagram Protocol) har ingen effekt.