also send the size of the size; close the socket before trying to reopen again so we dont leak fds