LingerOption(Boolean, Int32) Costruttore
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.