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 rimanere connessi dopo la chiamata del Close() metodo; in caso contrario, false.

seconds
Int32

Numero di secondi per rimanere connessi dopo la chiamata del Close() metodo.

Esempio

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

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 Socket continuare a trasmettere dati non inviati dopo la chiamata del metodo close. Usare il seconds parametro per indicare per quanto tempo si desidera che l'oggetto Socket tenti di trasferire i dati non inviati prima del timeout. Se si specifica true per il enable parametro e 0 per il seconds parametro , l'oggetto Socket tenterà 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 i dati non inviati andranno persi.

La tabella seguente descrive il comportamento dei Socket.Close metodi e TcpClient.Close in base ai possibili valori dei enable parametri e seconds quando viene creata un'istanza T:System.Net.Sockets.LingerOption e impostata 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 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 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 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à è impostata su un timeout del protocollo IP predefinito, il timeout del protocollo IP predefinito verrà comunque applicato ed eseguito l'override.

Si applica a