Condividi tramite


LingerOption(Boolean, Int32) Costruttore

Definizione

Inizializza una nuova istanza della classe 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)

Parametri

enable
Boolean

true per mantenere la connessione dopo la chiamata del metodo Close(), in caso contrario false.

seconds
Int32

Numero di secondi di permanenza della connessione dopo la chiamata del metodo Close().

Esempio

Nell'esempio seguente viene impostato un valore creato Socket in precedenza per rimanere un secondo dopo aver chiamato il Close metodo .

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)

Commenti

Dopo aver chiuso il Socketbuffer di rete in uscita, potrebbero essere ancora disponibili dati. Usare il enable parametro per specificare se si desidera che l'oggetto Socket continui a trasmettere dati non inviati dopo la chiamata al metodo close. Usare il seconds parametro per indicare per quanto tempo si desidera che tenti Socket di trasferire i dati non inviati prima del timeout. Se si specifica true per il enable parametro e 0 per il seconds parametro , tenterà Socket di inviare dati fino a quando non sono presenti dati rimanenti nel buffer di rete in uscita. Se si specifica false per il enable parametro , verrà Socket chiuso immediatamente e tutti i dati non inviati andranno persi.

La tabella seguente descrive il comportamento dei Socket.Close metodi e TcpClient.Close in base ai valori possibili dei enable parametri e seconds quando viene creata e impostata un'istanza T:System.Net.Sockets.LingerOption nella Socket.LingerState proprietà o TcpClient.LingerState .

enable seconds Comportamento
false (disabilitato), il valore predefinito Il timeout non è applicabile (impostazione predefinita). Tenta di inviare dati in sospeso per un socket orientato alla connessione ,ad esempio TCP, fino alla scadenza del timeout predefinito del protocollo IP.
true (abilitato) Timeout diverso da zero Tenta di inviare dati in sospeso fino alla scadenza del timeout specificato e, se il tentativo non riesce, Winsock reimposta la connessione.
true (abilitato) Timeout zero. Elimina tutti i dati in sospeso. Per il socket orientato alla connessione ,ad esempio TCP, Winsock reimposta la connessione.

Lo stack IP calcola il periodo di timeout del protocollo IP predefinito 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. Questo è il comportamento predefinito per un socket quando la LingerState proprietà non è impostata.

Quando la LingerTime proprietà archiviata nella LingerState proprietà è impostata su un timeout del protocollo IP predefinito, il timeout predefinito del protocollo IP verrà comunque applicato ed eseguito l'override.

Si applica a