PRLinger

PR_SockOpt_Linger 套接字选项一起使用的结构,用于指定在关闭套接字时(如果套接字发送缓冲区中仍有数据)保持连接的时间间隔(以 PRIntervalTime 单位表示)。

语法

#include <prio.h>

typedef struct PRLinger {
  PRBool polarity;
  PRIntervalTime linger;
} PRLinger;

字段

该结构具有以下字段

polarity

选项设置的极性:PR_FALSE 表示选项关闭,在这种情况下,linger 的值将被忽略。 PR_TRUE 表示选项打开,并且 linger 的值将用于确定 PR_Close 在返回之前等待多长时间。

linger

如果套接字发送缓冲区中仍有数据,则在关闭之前保持连接的时间(以 PRIntervalTime 单位表示)。

描述

默认情况下,PR_Close 会立即返回,但如果套接字发送缓冲区中仍有数据,则系统会尝试将数据发送到对等方。 PR_SockOpt_Linger 套接字选项(其值为 PRLinger 类型结构)可以按如下方式更改此默认值

  • 如果 polarity 设置为 PR_FALSE,则 PR_Close 会立即返回,但如果套接字发送缓冲区中仍有数据,则运行时会尝试将数据发送到对等方。

  • 如果 polarity 设置为 PR_TRUElinger 设置为 0 (PR_INTERVAL_NO_WAIT),则运行时在关闭连接时会中止连接并丢弃套接字发送缓冲区中剩余的任何数据。

  • 如果 polarity 设置为 PR_TRUElinger 不为零,则运行时在关闭套接字时会保持连接。 也就是说,如果套接字发送缓冲区中仍有数据,则 PR_Close 会阻塞,直到所有数据都发送并由对等方确认,或者 linger 指定的时间间隔过期。