Overview
The Winsock (Windows Sockets) API provides a standardized interface for network programming on Windows. It offers support for TCP/IP, UDP, and other protocols, enabling socket-based communication for both client and server applications.
#include <winsock2.h>
#pragma comment(lib, "Ws2_32.lib")
Examples
Below is a minimal TCP client example demonstrating Winsock initialization, connection, data transfer, and cleanup.
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "Ws2_32.lib")
int main() {
WSADATA wsaData;
SOCKET sock = INVALID_SOCKET;
struct sockaddr_in server;
WSAStartup(MAKEWORD(2,2), &wsaData);
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("93.184.216.34"); // example.com
server.sin_port = htons(80);
connect(sock, (struct sockaddr*)&server, sizeof(server));
const char *msg = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n";
send(sock, msg, (int)strlen(msg), 0);
char buffer[512];
int bytes = recv(sock, buffer, sizeof(buffer)-1, 0);
if (bytes > 0) {
buffer[bytes] = 0;
printf("%s", buffer);
}
closesocket(sock);
WSACleanup();
return 0;
}