Estoy intentando evitar TIME_WAIT en un cliente. Me conecto y luego configuro O_NONBLOCK y SO_REUSEADDR. Llamo a read hasta que devuelve 0. Cuando read devuelve 0, el errno también es 0. Interpreté esto como una señal de que el servidor cerró la conexión. Sin embargo, si llamo close, el socket se establece en TIME_WAIT, como lo confirma netstat.Evitando TIME_WAIT
Dado que realizo varias conexiones al mismo host/puerto, eventualmente empiezo a ver errores de "Dirección en uso" (vea http://hea-www.harvard.edu/~fine/Tech/addrinuse.html).
¿Debo llamar después de que read devuelve 0? Si no, ¿se publicará el descriptor del archivo?
sidenote: errno el valor no está definido cuando se lee devuelve 0 - errno solamente se define después de un fallo. –