LingerOption(Boolean, Int32) 构造函数

定义

初始化 LingerOption 类的新实例。

public:
 LingerOption(bool enable, int seconds);
public LingerOption (bool enable, int seconds);
new System.Net.Sockets.LingerOption : bool * int -> System.Net.Sockets.LingerOption
Public Sub New (enable As Boolean, seconds As Integer)

参数

enable
Boolean

如果调用 Close() 方法后保持连接,则为 true;否则为 false

seconds
Int32

调用 Close() 方法后保持连接的秒数。

示例

以下示例将以前创建的 Socket 设置为在调用 Close 方法后一秒后挥之不去。

LingerOption^ myOpts = gcnew LingerOption( true,1 );
mySocket->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::Linger, myOpts );
LingerOption myOpts = new LingerOption(true,1);

mySocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, myOpts);
Dim myOpts As New LingerOption(True, 1)
       
mySocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, _
   myOpts)

注解

关闭 Socket后,传出网络缓冲区中可能仍有可用数据。 enable使用 参数指定是否希望 Socket 在调用 close 方法后继续传输未发送的数据。 seconds使用 参数指示希望 Socket 在超时之前尝试传输未送入数据的时间。如果为 参数指定 ,为 enableseconds 参数指定 true 0,Socket则 将尝试发送数据,直到传出网络缓冲区中没有剩余的数据。 如果为 enable 参数指定 falseSocket 将立即关闭,并且所有未输入的数据都将丢失。

下表描述了Socket.Close在 或 TcpClient.LingerState 属性中创建Socket.LingerStateTcpClient.Close设置 T:System.Net.Sockets.LingerOption 实例时, 和 方法的行为基于 和 seconds 参数的enable可能值。

enable seconds 行为
false (禁用) ,默认值 超时不适用, (默认) 。 尝试为面向连接的套接字发送挂起数据 (TCP,例如,) 直到默认 IP 协议超时过期。
true 已启用 () 非零超时 尝试发送挂起的数据,直到指定的超时过期,如果尝试失败,Winsock 将重置连接。
true 已启用 () 零超时。 放弃任何挂起的数据。 对于面向连接的套接字 (TCP(例如) ),Winsock 会重置连接。

IP 堆栈根据连接的往返时间计算要使用的默认 IP 协议超时期限。 在大多数情况下,堆栈计算的超时比应用程序定义的超时更相关。 这是未设置 属性时 LingerState 套接字的默认行为。

LingerTime如果属性中LingerState存储的属性设置为大于默认 IP 协议超时,则默认 IP 协议超时仍将应用并替代。

适用于