LINGER 结构 (winsock.h)

linger 结构维护有关特定套接字的信息,该套接字指定在排队发送数据并在套接字上调用 closesocket 函数时该套接字的行为方式。

语法

typedef struct linger {
  u_short l_onoff;
  u_short l_linger;
} LINGER, *PLINGER, *LPLINGER;

成员

l_onoff

类型: u_short

指定套接字在 调用 closesocket 函数后是否应在指定时间内保持打开状态,以允许发送排队数据。 此成员可以具有以下值之一。

含义
0
套接字不会保持打开状态。 如果调用 setsockopt 函数且 optname 参数设置为 SO_DONTLINGERoptval 参数为零,则此值设置。

如果调用 setsockopt 函数时,optname 参数设置为 SO_LINGER 且在 optval 参数中传递的 linger 结构将 l_onoff 成员设置为 0,则也会设置此值。

套接字将在指定的时间内保持打开状态。 如果调用 setsockopt 函数且 optname 参数设置为 SO_DONTLINGERoptval 参数为非零,则设置此值。

如果调用 setsockopt 函数且 optname 参数设置为 SO_LINGER 并且 optval 参数中传递的 linger 结构将 l_onoff 成员设置为非零值,则也会设置此值。

l_linger

类型: u_short

以秒为单位的徘徊时间。 此成员指定 在调用 closesocket 函数以允许发送排队数据后保持打开状态的时间。 仅当 linger 结构的l_onoff成员设置为非零值时,此成员才适用。

如果调用 setsockopt 函数,并将 optname 参数设置为 SO_LINGER,则会设置此值。 传递给 setsockopt 函数的 optval 参数必须包含一个 linger 结构,该结构将复制到为套接字维护的内部 linger 结构。

注解

linger 结构的l_onoff成员确定套接字在调用 closesocket 函数后是否应在指定的时间内保持打开状态,以允许发送排队数据。 有点令人困惑的是,可以通过两种方式修改此成员:

  • 调用 setockopt 函数,并将 optname 参数设置为 SO_DONTLINGERoptval 参数确定如何修改 l_onoff 成员。
  • 调用 setockopt 函数,并将 optname 参数设置为 SO_LINGERoptval 参数指定如何修改l_onoffl_linger成员。

linger 结构的 l_linger 成员确定套接字应保持打开状态的时间量(以秒为单位)。 仅当 linger 结构的l_onoff成员为非零时,此成员才适用。

若要使套接字保持打开状态,应用程序应将 l_onoff 成员设置为非零值,并将 l_linger 成员设置为所需的超时(以秒为单位)。 若要禁用套接字保持打开状态,应用程序只需将 linger 结构的 l_onoff 成员设置为零。

如果应用程序调用 optname 参数设置为 SO_DONTLINGER的 setsockopt 函数,将 l_onoff 成员设置为非零值,则不指定 l_linger 成员的值。 在这种情况下,使用的超时依赖于实现。 如果通过启用SO_LINGER) 为套接字 (建立了以前的超时,则服务提供商应恢复此超时值。

请注意,不建议在非阻止套接字上启用非零超时。

可以在将 optname 参数设置为 SO_LINGER 的情况下调用 getsockopt 函数,以检索与套接字关联的 linger 结构的当前值。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
标头 winsock.h (包括 Winsock2.h)

另请参阅

正常关闭、挂起选项和套接字关闭

closesocket

getsockopt

setsockopt