LINGER 结构 (winsock2.h)
linger 结构维护有关特定套接字的信息,该套接字指定在排队发送数据并在套接字上调用 closesocket 函数时该套接字的行为方式。
语法
typedef struct linger {
u_short l_onoff;
u_short l_linger;
} LINGER, *PLINGER, *LPLINGER;
成员
l_onoff
类型: u_short
指定套接字在 调用 closesocket 函数后是否应在指定时间内保持打开状态,以允许发送排队数据。 此成员可以具有以下值之一。
值 | 含义 |
---|---|
|
套接字不会保持打开状态。 如果调用 setsockopt 函数且 optname 参数设置为 SO_DONTLINGER 且 optval 参数为零,则此值设置。
如果调用 setsockopt 函数时,optname 参数设置为 SO_LINGER 且在 optval 参数中传递的 linger 结构将 l_onoff 成员设置为 0,则也会设置此值。 |
|
套接字将在指定的时间内保持打开状态。 如果调用 setsockopt 函数且 optname 参数设置为 SO_DONTLINGER 且 optval 参数为非零,则设置此值。
如果调用 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_DONTLINGER。 optval 参数确定如何修改 l_onoff 成员。
- 调用 setockopt 函数,并将 optname 参数设置为 SO_LINGER。 optval 参数指定如何修改l_onoff和l_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 [仅限桌面应用] |
标头 | winsock2.h (包括 Winsock2.h) |