Socket.NoDelay Property

Note: This property is new in the .NET Framework version 2.0.

Gets or sets a Boolean value that specifies whether the stream Socket is using the Nagle algorithm.

Namespace: System.Net.Sockets
Assembly: System (in system.dll)

public bool NoDelay { get; set; }
/** @property */
public boolean get_NoDelay ()

/** @property */
public void set_NoDelay (boolean value)

public function get NoDelay () : boolean

public function set NoDelay (value : boolean)

Property Value

false if the Socket uses the Nagle algorithm; otherwise, true. The default is false.

Exception typeCondition

SocketException

An error occurred when attempting to access the Socket. See the Remarks section for more information.

ObjectDisposedException

The Socket has been closed.

The Nagle algorithm reduces network traffic by causing the socket to buffer packets for up to 200 milliseconds and then combines and sends them in one packet

The majority of network applications should use the Nagle algorithm.

Setting this property on a User Datagram Protocol (UDP) socket will have no effect.

The following code example demonstrates the use of the NoDelay property.

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("");
}

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

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0

Community Additions

ADD
Show: