Socket.Ttl Property


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Gets or sets a value that specifies the Time To Live (TTL) value of Internet Protocol (IP) packets sent by the Socket.

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

public short Ttl { get; set; }

Property Value

Type: System.Int16

The TTL value.

Exception Condition

The TTL value can't be set to a negative number.


This property can be set only for sockets in the InterNetwork or InterNetworkV6 families.


An error occurred when attempting to access the socket. This error is also returned when an attempt was made to set TTL to a value higher than 255.


The Socket has been closed.

The TTL value indicates the maximum number of routers the packet can traverse before the router discards the packet and an Internet Control Message Protocol (ICMP) "TTL exceeded" error message is returned to the sender.

The TTL value may be set to a value from 0 to 255. When this property is not set, the default TTL value for a socket is 32.

Setting this property on a Transmission Control Protocol (TCP) socket is ignored by the TCP/IP stack if a successful connection has been established using the socket.

If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation in the MSDN library for a detailed description of the error.

The following code example demonstrates the use of the Ttl 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}", 

	Console.WriteLine("  LingerState {0}, {1}", 

	Console.WriteLine("  NoDelay {0}", 

	Console.WriteLine("  ReceiveBufferSize {0}", 

	Console.WriteLine("  ReceiveTimeout {0}", 

	Console.WriteLine("  SendBufferSize {0}", 

	Console.WriteLine("  SendTimeout {0}", 

	Console.WriteLine("  Ttl {0}", 

                      Console.WriteLine("  IsBound {0}", 


Universal Windows Platform
Available since 10
.NET Framework
Available since 2.0
Available since 2.0
Windows Phone Silverlight
Available since 7.1
Return to top