bind() - Signatur

#include<sys/types.h>
#include<sys/socket.h>

int bind(int sockfd, struct sockaddr *my_addr, int addrlen);

sockfd ist der Filedescriptor des Socket der gebunden werden soll. my_addr ist die Adresse an die der Socket gebunden werden soll. Dabei wird für IP-Adressen das struct sockaddr_in (übrigens im Header 'netinet/in.h' definiert) verwendet und beim Aufruf von bind() in ein struct sockaddr (bzw. einen Pointer darauf) gecastet (siehe Beispiel). Normalerweise wird die IP-Adresse auf INADDR_ANY gesetzt (es ist also jede IP-Adresse gültig) und nur ein Port spezifiziert, an den der Socket gebunden werden soll (diese Art von Bindung ist unbedingt nötig, bevor auf einen SOCK_STREAM Socket accept() aufgerufen wird). addrlen spezifiziert die Größe von my_addr in Bytes.

Hilfe unter Linux

$ man 2 bind

Beispiele

Binden eines Sockets

struct sockaddr_in addr; /* Die Struktur in der eine Internetadresse gespeichert wird */

addr.sin_family = PF_INET; /* Es handelt sich bei der Adresse um eine IPv4 Internetadresse */
addr.sin_addr.s_addr = INADDR_ANY; /* Jede Internetadresse ist gültig */
addr.sin_port = 0; /* Jeder Port ist gültig */

if(bind(socketfd, (struct sockaddr *)&addr, sizeof(addr)) == -1){
  /* Fehler */
}
/* Alles hat geklappt; nun ist der Socket gebunden und kann zum senden verwendet
* werden. Obiges Beispiel funktioniert nur mit UDP Sockets, da ein TCP Socket
* an einen bestimmten Port gebunden werden muss.
* Anmerkung: für normale Benutzer sind nur Portnummern größer als 1024
* gültig.
*/