En el caso predeterminado, al
la pila de red intenta cerrar la conexión con gracia después de asegurarse de que se envían todos los datos, pero esto ocurre de forma asíncrona , en segundo plano , y la llamada a close()
regresará sin garantizar que este cierre se haya completado. close()
El caso
es, por supuesto, diferente. Tiene dos modos de operación: cuando SO_LINGER
es cero y cuando no es cero. Cuando es cero, l_linger
aún regresa de inmediato, pero los datos no enviados se descartan y (para protocolos orientados a la conexión) la conexión se restablece (por ejemplo, se envía un RST en el caso de TCP). Cuando no es cero, close()
comporta sincrónicamente y bloquea hasta que transcurra el tiempo especificado por close()
, en cuyo punto el comportamiento es como en el caso cero de l_linger
. l_linger
Puedo ver muchas opciones de diseño que sugerirían que debería o no usar
, pero si ese comportamiento es deseable para su aplicación, no los clasificaría como “inconvenientes”. SO_LINGER
- ¿Qué es el ARP?
- ¿Es posible saber cuántas personas están usando la misma dirección IP pública?
- ¿Cómo funcionan las capas OSI?
- ¿Cuál es la diferencia entre SNMP y TCP / IP?
- ¿Cuál es la diferencia entre Ethernet y TCP / IP?