Próbuję uniknąć TIME_WAIT w kliencie. Łączę, a następnie ustawiamy O_NONBLOCK i SO_REUSEADDR. Wywołuję odczyt dopóki nie zwróci 0. Gdy read zwraca 0, errno jest równe 0. Zinterpretowałem to jako znak, że serwer zamknął połączenie. Jeśli jednak zadzwonię pod zamknięciem, gniazdo zostanie ustawione na TIME_WAIT, co zostanie potwierdzone przez netstat.Unikanie TIME_WAIT
Ponieważ wykonuję wiele połączeń z tym samym hostem/portem, w końcu zaczynam widzieć błędy "Adres w użyciu" (patrz http://hea-www.harvard.edu/~fine/Tech/addrinuse.html).
Czy powinienem wywoływać zamknięcie po przeczytaniu zwraca 0? Jeśli nie, zwolniony zostanie deskryptor pliku?
Sidenote: wartość errno jest niezdefiniowana podczas odczytu zwraca 0 - errno jest definiowana tylko po awarii. –