Bei der Adressfamilie AF_INET besteht ein Name aus einer 4 byte langen Internet-Adresse und einer Portnummer. Für die Adressfamilie AF_INET verwenden Sie die Adress-Struktur sockaddr_in. Diese Struktur besitzt eine Variante für #define SIN_LEN.
Die Struktur sockaddr_in ist in der Include-Datei <netinet.in.h> wie folgt deklariert:
struct sockaddr_in { short sin_family; /* Adressfamilie AF_INET */ u_short sin_port; /* 16 bit Portnummer */ struct in_addr sin_addr; /* 32 bit Internet-Adresse */ char sin_zero[8]; };
Strukturvariante von sockaddr_in mit gesetztem #define SIN_LEN zur Unterstützung von BSD 4.4 Systemen:
struct sockaddr_in { u_char sin_len; /* Länge der Struktur*/ u_char sin_family; /* Adressfamilie AF_INET */ u_short sin_port; /* 16 bit Portnummer */ struct in_addr sin_addr; /* 32 bit Internet-Adresse */ char sin_zero[8]; };
Mit den folgenden Anweisungen können Sie eine Variable server vom Typ struct sockaddr_in mit einem Namen versorgen:
struct sockaddr_in server; ... server.sin_family = AF_INET; server.sin_port = htons(8888); server.sin_addr.s_addr = htonl(INADDR_ANY);
Ein Zeiger auf die Variable server kann nun als aktueller Parameter, z.B. bei einem bind()-Aufruf, übergeben werden, um den Namen an einen Socket zu binden:
bind(..., &server, ...) /* bind()-Aufruf mit Typ-Konvertierung */
Die Strukturen für Rechner-, Protokoll- und Service-Namen sind im Kapitel „Adressumwandlung bei SOCKETS(BS2000)" dargestellt.