Quanto è brutto vedere quel listensocket deferenziato così tante volte.
Alla fine è un numero intero, quindi passarlo per valore o riferimento non serve a niente. Ritornalo dalla funzione e controllalo se diverso da INVALID_SOCKET