Export (0) Print
Expand All
5 out of 8 rated this helpful - Rate this topic

linger structure

The linger structure maintains information about a specific socket that specifies how that socket should behave when data is queued to be sent and the closesocket function is called on the socket.

Syntax


typedef struct linger {
  u_short l_onoff;
  u_short l_linger;
} linger;

Members

l_onoff

Type: u_short

Specifies whether a socket should remain open for a specified amount of time after a closesocket function call to enable queued data to be sent. This member can have one of the following values.

ValueMeaning
0

The socket will not remain open. This is the value set if the setsockopt function is called with the optname parameter set to SO_DONTLINGER and the optval parameter is zero.

This value is also set if the setsockopt function is called with the optname parameter set to SO_LINGER and the linger structure passed in the optval parameter has the l_onoff member set to 0.

nonzero

The socket will remain open for a specified amount of time. This value is set if the setsockopt function is called with the optname parameter set to SO_DONTLINGER and the optval parameter is nonzero.

This value is also set if the setsockopt function is called with the optname parameter set to SO_LINGER and the linger structure passed in the optval parameter has the l_onoff member set to a nonzero value.

 

l_linger

Type: u_short

The linger time in seconds. This member specifies how long to remain open after a closesocket function call to enable queued data to be sent. This member is only applicable if the l_onoff member of the linger structure is set to a nonzero value.

This value is set if the setsockopt function is called with the optname parameter set to SO_LINGER. The optval parameter passed to the setsockopt function must contain a linger structure that is copied to the internal linger structure maintained for the socket.

Remarks

The l_onoff member of the linger structure determines whether a socket should remain open for a specified amount of time after a closesocket function call to enable queued data to be sent. Somewhat confusing is that this member can be modified in two ways:

  • Call the setsockopt function with the optname parameter set to SO_DONTLINGER. The optval parameter determines how the l_onoff member is modified.
  • Call the setsockopt function with the optname parameter set to SO_LINGER. The optval parameter specifies how both the l_onoff and l_linger members are modified.

The l_linger member of the linger structure determines the amount of time, in seconds, a socket should remain open. This member is only applicable if the l_onoff member of the linger structure is nonzero.

To enable a socket to remain open, an application should set the l_onoff member to a nonzero value and set the l_linger member to the desired time-out in seconds. To disable a socket from remaining open, an application only needs to set the l_onoff member of the linger structure to zero.

If an application calls the setsockopt function with the optname parameter set to SO_DONTLINGER to set the l_onoff member to a nonzero value, the value for the l_linger member is not specified. In this case, the time-out used is implementation dependent. If a previous time-out has been established for a socket (by enabling SO_LINGER), this time-out value should be reinstated by the service provider.

Note that enabling a nonzero timeout on a nonblocking socket is not recommended.

The getsockopt function can be called with the optname parameter set to SO_LINGER to retrieve the current value of the linger structure associated with a socket.

Requirements

Minimum supported client

Windows 2000 Professional [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]

Header

Winsock2.h

See also

Graceful Shutdown, Linger Options, and Socket Closure
setsockopt
getsockopt
closesocket

 

 

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.