Condividi tramite


TcpClient.LingerState Proprietà

Definizione

Ottiene o imposta le informazioni sullo stato di ritardo del socket associato.

public:
 property System::Net::Sockets::LingerOption ^ LingerState { System::Net::Sockets::LingerOption ^ get(); void set(System::Net::Sockets::LingerOption ^ value); };
public System.Net.Sockets.LingerOption? LingerState { get; set; }
public System.Net.Sockets.LingerOption LingerState { get; set; }
member this.LingerState : System.Net.Sockets.LingerOption with get, set
Public Property LingerState As LingerOption

Valore della proprietà

Oggetto LingerOption. Per impostazione predefinita, il tempo di ritardo è disabilitato.

Esempio

L'esempio di codice seguente imposta e ottiene il tempo persistente dei socket.

// sets the amount of time to linger after closing, using the LingerOption public property.
LingerOption^ lingerOption = gcnew LingerOption( true,10 );
tcpClient->LingerState = lingerOption;

// gets the amount of linger time set, using the LingerOption public property.
if ( tcpClient->LingerState->LingerTime == 10 )
      Console::WriteLine( "The linger state setting was successfully set to {0}", tcpClient->LingerState->LingerTime );
// sets the amount of time to linger after closing, using the LingerOption public property.
LingerOption lingerOption = new LingerOption (true, 10);

tcpClient.LingerState = lingerOption;

// gets the amount of linger time set, using the LingerOption public property.
if (tcpClient.LingerState.LingerTime == 10)
    Console.WriteLine ("The linger state setting was successfully set to " + tcpClient.LingerState.LingerTime.ToString ());
' Sets the amount of time to linger after closing, using the LingerOption public property.
Dim lingerOption As New LingerOption(True, 10)
tcpClient.LingerState = lingerOption

' Gets the amount of linger time set, using the LingerOption public property.
If tcpClient.LingerState.LingerTime = 10 Then
   Console.WriteLine(("The linger state setting was successfully set to " + tcpClient.LingerState.LingerTime.ToString()))
End If

Commenti

La LingerState proprietà modifica il modo in cui Close si comporta il metodo. Questa proprietà quando impostata modifica le condizioni in cui la connessione può essere reimpostata da Winsock. Le reimpostazioni della connessione possono comunque verificarsi in base al comportamento del protocollo IP.

Questa proprietà controlla il periodo di tempo in cui la connessione TCP rimarrà aperta dopo una chiamata a Close quando i dati rimangono da inviare. Quando si chiama il metodo, i Write dati vengono inseriti nel buffer di rete in uscita. Questa proprietà può essere usata per assicurarsi che questi dati vengano inviati all'host remoto prima che il Close metodo elimina la connessione.

Per abilitare il ritardo, creare un'istanza LingerOption contenente i valori desiderati e impostare la LingerState proprietà su questa istanza.

Nella tabella seguente viene descritto il comportamento del Close metodo per i valori possibili della Enabled proprietà e la LingerTime proprietà archiviata nella LingerState proprietà .

LingerState.Enabled LingerState.LingerTime Comportamento
false (disabilitato), il valore predefinito Il timeout non è applicabile(impostazione predefinita). Tenta di inviare dati in sospeso fino alla scadenza del timeout del protocollo IP predefinito.
true (abilitato) Timeout diverso da zero Tenta di inviare dati in sospeso fino alla scadenza del timeout specificato e, se il tentativo ha esito negativo, Winsock reimposta la connessione.
true (abilitato) Timeout zero. Elimina i dati in sospeso e Winsock reimposta la connessione.

Lo stack IP calcola il timeout predefinito del protocollo IP da usare in base al tempo di round trip della connessione. Nella maggior parte dei casi, il timeout calcolato dallo stack è più rilevante di uno definito da un'applicazione. Si tratta del comportamento predefinito per un socket quando la LingerState proprietà non è impostata.

Quando la LingerTime proprietà archiviata nella LingerState proprietà è maggiore del timeout del protocollo IP predefinito, il timeout predefinito del protocollo IP verrà comunque applicato e sottoposto a override.

Si applica a

Vedi anche