Hi, well, you have two possibilities - first is to close the socket before you use the new AcceptEx using the closesocket(). But then you simply destroyed everything and there's no reuse. Second is to re-use the socket - for this you can use this trick: Instead of calling closesocket() you can use this one: TransmitFile( sock, NULL, 0, 0, NULL, NULL, TF_DISCONNECT | TF_REUSE_SOCKET ) This will close the socket, but makes it ready for AcceptEx reuse. Works only on NT, but as you wrote you use IOCP, so should not be a problem here ;)