Je maakt gebruik van het winsock dinggeval?
Dan heb je een event genaamd SendComplete.
Oftewel, als je data aan het versturen bent, zet je bv. een boolean SendingData op true.
Als jij ergens je verbinding wilt verbreken, kijk je of je data aan het versturen bent, door die boolean te controlleren. Als die boolean dus op true staat, kan je nog niet de verbinding sluiten. Wat je dan *wel* kan doen, is weer een andere boolean op true zetten. BV. CloseAfterSend = true
Zodra het event SendComplete aangeroepen word, zet je ten eerste de SendingData boolean op false, en ten tweede kijk je of CloseAfterSend op true staat. Zo ja; zet je die ook op false, en je verbreekt te verbinding.
And that's how it's done.

Dit is hoe ik het ook doe in m'n winsock apps.