The Windows Sockets specification provides a number of extensions to the
standard set of Berkeley Sockets routines. Principally, these extended functions
allow message or function-based, asynchronous access to network events, as well as
enable overlapped I/O. While use of this extended API set is not mandatory for
socket-based programming (with the exception of WSAStartup and WSACleanup), it is recommended for conformance with the Microsoft Windows programming
paradigm. For features introduced in Windows Sockets 2, please see New Concepts, Additions and Changes for Windows Sockets 2.