Если _WIN32_WINNT
равно < 0x0400
, windows.h
включает winsock.h
, если оно и winsock2.h
еще не включены.
Если _WIN32_WINNT
равно >= 0x0400
, windows.h
включает winsock2.h
вместо winsock.h
.
winsock.h
несовместим с winsock2.h
, поэтому, если winsock.h
будет включено до winsock2.h
, произойдут все виды ошибок, включая те, которые вы видите. Но если winsock2.h
будет включено до winsock.h
, он отключит winsock.h
, чтобы вы могли избежать ошибок.
Итак, чтобы отключить winsock.h
, чтобы вы могли использовать winsock2.h
, вам необходимо:
убедитесь, что _WIN32_WINNT
равно >= 0x0400
.
ход #include<winsock2.h>
выше #include<windows.h>
добавить #define _WINSOCKAPI_
выше #include<windows.h>
Кроме того, на боковой ноте WIN_32_LEAN_AND_MEAN
должно быть вместо WIN32_LEAN_AND_MEAN
.