Definition
typedef struct sockaddr_in {
short sin_family; // AF_INET
u_short sin_port; // Port number (network byte order)
struct in_addr sin_addr; // IPv4 address
char sin_zero[8]; // Padding to match sizeof(sockaddr)
} SOCKADDR_IN, *PSOCKADDR_IN;
Members
| Member | Type | Description |
|---|---|---|
sin_family | short | Address family, must be AF_INET |
sin_port | u_short | Port number in network byte order (use htons/ntohs) |
sin_addr | struct in_addr | IPv4 address (use inet_addr, inet_pton) |
sin_zero | char[8] | Reserved for padding; set to zero |
Typical Usage
The sockaddr_in structure is used with IPv4 network functions such as bind, connect, sendto, and recvfrom.
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "Ws2_32.lib")
int main() {
WSADATA wsa;
WSAStartup(MAKEWORD(2,2), &wsa);
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET) return 1;
SOCKADDR_IN server;
server.sin_family = AF_INET;
server.sin_port = htons(80); // HTTP
server.sin_addr.s_addr = inet_addr("93.184.216.34"); // example.com
memset(server.sin_zero, 0, sizeof(server.sin_zero));
if (connect(s, (SOCKADDR*)&server, sizeof(server)) == SOCKET_ERROR) {
closesocket(s);
WSACleanup();
return 1;
}
// ... send/receive ...
closesocket(s);
WSACleanup();
return 0;
}