Napisalem maly serwer ale nie przewidzialem jednego problemu

Mianowiecie mam otwartego socket servbera, akceptuje polaczenie i daje fwrite($s, $dane). Problem w tym ze fwrite z zadowloneim po ulamku sekundy konczy dzialanie a dane sie wysylaja.
Wszytko bylo by ok ale za fwrite jest fclose. Po zamknieciu bufor oproznia sie i do klienta docieraja strzepki danych.
Jak wykryc koniec tranferu i dopiero po zakonczeniu zamknac polaczenie?