Network Programming
Introduction to Windows Network Programming
This section provides an overview of the APIs and technologies available for developing network-aware applications on Windows. You'll find information on socket programming, named pipes, Remote Procedure Calls (RPC), and higher-level networking protocols.
Key Concepts
Sockets API (Winsock)
Winsock (Windows Sockets API) is the standard Windows interface for network communication. It provides a familiar Berkeley Sockets interface for developing TCP/IP and UDP applications.
Core Functions
Function | Description |
---|---|
socket() |
Creates a socket. |
bind() |
Associates a local address with a socket. |
connect() |
Establishes a connection to a remote socket. |
listen() |
Puts a socket into a listening mode. |
accept() |
Accepts an incoming connection request. |
send() / recv() |
Sends and receives data. |
sendto() / recvfrom() |
Sends and receives data with datagram sockets. |
closesocket() |
Closes a socket. |
Related Structures and Constants
SOCKADDR
,SOCKADDR_IN
: Address structures.WSADATA
: Used withWSAStartup()
.- Socket options (e.g.,
SO_REUSEADDR
).
Named Pipes
Named pipes provide a mechanism for inter-process communication (IPC) on Windows, allowing processes to communicate across a network or on the same machine.
Key Functions
Function | Description |
---|---|
CreateNamedPipe() |
Creates a named pipe server. |
CreateFile() |
Opens a named pipe client. |
ReadFile() / WriteFile() |
Reads from and writes to the pipe. |
ConnectNamedPipe() |
Waits for a client to connect. |
DisconnectNamedPipe() |
Disconnects a client. |
Remote Procedure Call (RPC)
RPC allows a program to cause a procedure (subroutine) to execute in another address space (typically on another computer on a shared virtual address space) without the programmer explicitly coding the details. This is commonly used for distributed applications.
Key Components
- Interface Definition Language (IDL) files for defining interfaces.
- RPC runtime libraries.
midl.exe
compiler.
HTTP APIs
Windows provides APIs for interacting with HTTP protocols, enabling clients to make HTTP requests and servers to handle them.
Libraries
- WinHTTP: A client-side API for interacting with HTTP servers.
- WinINet: Older, more comprehensive API including FTP and Gopher support.
- IIS (Internet Information Services) APIs for building web servers.
DNS Client API
Provides functions for performing DNS name resolution and managing DNS client settings.
Key Functions
Function | Description |
---|---|
DnsQuery_A() / DnsQuery_UTF8() |
Performs DNS queries. |
DnsGetHostByAddr() |
Retrieves host information by IP address. |