Winsock API Reference
Overview
The Windows Sockets API (Winsock) provides a standardized interface for network communication on Windows platforms. It implements the Berkeley sockets API with extensions specific to Windows.
Typical workflow:
WSAStartup(); // Initialize Winsock
sock = socket(); // Create socket
bind(sock, ...); // Bind address (server)
listen(sock, ...); // Listen for connections (server)
conn = accept(sock); // Accept a client (server)
connect(sock, ...); // Connect to server (client)
send(sock, ...); // Send data
recv(sock, ...); // Receive data
closesocket(sock); // Close socket
WSACleanup(); // Cleanup Winsock
Key Structures
typedef struct sockaddr {
unsigned short sa_family;
char sa_data[14];
} SOCKADDR, *PSOCKADDR;
typedef struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
} SOCKADDR_IN, *PSOCKADDR_IN;
typedef struct in_addr {
union {
struct { BYTE s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { WORD s_w1,s_w2; } S_un_w;
ULONG S_addr;
} S_un;
} IN_ADDR, *PIN_ADDR;
Typical Errors
WSAEWOULDBLOCK
– Non‑blocking socket operation would block.WSAETIMEDOUT
– Connection timed out.WSAECONNREFUSED
– Connection refused by remote host.WSAENETDOWN
– Network is down.