Ich habe zwei Paar Codes (server.c
und client.c
) in Linux geschrieben. Eine für UNIX-Domäne AF_UNIX
andere für INTERNET-Domäne AF_INET
. Beides funktioniert gut!listen() Warteschlangenlänge in Socket-Programmierung in c?
listen()
heißt für Backlogwarteschlange Länge = 3 in both servers
listen(sockfd, 3);
In UNIX Domain (AF_UNIX): Während ein Client mit dem Server verbunden ist, wenn ich versuche, mehr Kunden-Server zu verbinden . Drei werden in der Warteschlange gehalten, und die Anfrage der vierten wird abgelehnt. (wie ich wollte - 3 in der Warteschlange).
In INTERNET-Domäne (AF_INET): Anforderung von mehr als drei werden in einer Warteschlange für wartende gehalten.
Warum wird eine Anforderung von einem vierten Client nicht abgelehnt, selbst wenn die Länge der Rückstauwarteschlange drei ist? Und warum ist das Verhalten von listen()
(und anderen) Protokoll abhängig?
Ich verstehe nicht wirklich Ihre Absicht ... Warum sollten Sie jemals einen Client ablehnen, nur weil die Warteschlange voll ist? –
@KarolyHorvath: Ich meine, es sollte abgelehnt werden, wenn ich die Warteschlange Länge gegeben. Und ich möchte das wissen. –
@Grijesh Chauhan: theoretisch ... ja .. * praktisch * .. wen interessiert das? Warum stört dich das? –