int listen( int socket, int backlog);

Wird die Funktion listen() aufgerufen, wartet der Server-Prozess darauf, dass ein Verbindungswunsch an ihn gerichtet wird. Der Parameter socket gibt an, auf welcher Adresse und welchem Port auf Verbindungen „gelauscht“ wird. Diese Angaben wurden mittels der bind()-Funktion gemacht. Der Parameter backlog gibt historisch (in BSD basierten Betriebssystemen) die Anzahl der möglichen Verbindungswünsche an: Jeder Verbindungswunsch wird zunächst in einer Warteschlange vermerkt. Ist die Anzahl der Anforderungen auf eine Verbindung größer als der Parameter backlog angibt, dann wird der Verbindungswunsch abgewiesen ansonsten wird die Verbindung aufgebaut. In Linux gibt es jedoch zwei Warteschlangen: Eine, in der Verbindungswünsche vermerkt werden und eine, in der die aufgebauten Verbindungen („accept queue”) gespeichert werden. Die Größe der „accept queue“ wird im Betriebssystem Linux als Parameter backlog angegeben. Wenn die Funktion erfolgreich ausgeführt wurde, dann liefert sie als Rückgabe die Zahl 0, ansonsten eine negative Zahl.

Beispiel:

int socket_descriptor;
int return_value;
const int MAX_QUEUE = 9;

return_value = listen( socket_descriptor, MAX_QUEUE);

if(return_val < 0)
{
	perror(“bind stream socket”);
	exit(1);
}