int iFamily = AF_UNSPEC;
saLocal.sin_family = (ADDRESS_FAMILY)iFamily;
Как вы собираетесь создать сокет с неопределённым типом? Он должен быть в вашем случае либо AF_INET, либо AF_INET6.
А насчёт WSAEACCESS вы читали
MSDN? Там же даже табличка есть, с объяснениями ошибок и в каких случаях они появляются, и внизу указано:
Note A socket that is using the SO_EXCLUSIVEADDRUSE option must be shut down properly prior to closing it. Failure to do so can cause a denial of service attack if the associated service needs to restart.
Ещё советую почитать про TCP вообще. Про его конечный автомат, какие у него бывают состояния, что такое полу-закрытый сокет, что такое graceful shutdown, и т. п.
Когда вы используете SO_EXCLUSIVEADDRUSE, у вас не должно быть повисших соединений в любом из состояний. Т. е. не только ESTABLISHED, но и различных FIN-WAIT, TIME-WAIT, CLOSE-WAIT тоже быть не должно. Если вы биндитесь на один и тот же порт всегда, то использовать SO_EXCLUSIVEADDRUSE на клиентах будет очень проблематично, ибо всегда будете нарываться на полу-закрытый порт.