Errori di ridefinizione di Winsock

Sto compilando un progetto in Visual C ++ 2010, ma ho problemi con alcune ridefinizioni di Winsock.

Prima di tutto ottengo:

syntax error : identifier 'SOCKADDR_STORAGE' 

Ma se includo winsock o winsock2 o ws2tcpip ottengo molti errori come questi:

 error C2011: 'sockaddr' : 'struct' type redefinition error C2011: 'WSAData' : 'struct' type redefinition error C2011: 'linger' : 'struct' type redefinition 

Il tuo problema è che includendo Windows.h , stai già includendo winsock.h . È qui che si presenta il problema come includere winsock2.h o ws2tcpip.h tenterà di ridefinire alcune delle definizioni in winsock.h

Usando #define WIN32_LEAN_AND_MEAN prima che il tuo Windows.h includa, interrompi il compilatore dall’includere un sacco di cose extra che vengono Windows.h con Windows.h