WinSock: Anzahl der Client-Verbindung begrenzen



  • Hallo Community.
    Ich möchte eine TCP/IP Kommunikation über WinSockets herstellen (C++). Der Server soll dabei nur die anfragen von 5 Clients bearbeiten können.

    Dazu habe ich folgenden Aufruf bei dem Server verwendet:

    listen( m_socket, 5)
    

    Außerdem wird über ein Select in der Hauptschleife geprüft, wieviele Clients sich bereich erfolgreich verbunden haben.

    Mein Problem: versucht sich ein 6. Client zu verbinden, so ist der connect-Aufruf des CLients erfolgreich (ohne das accept des Servers). Verlässt einer der ersten 5 Clients die Verbindung, so rückt der 6. automatisch nach und alle von ihm bisher gesendeten Nachrichten werden sofort interpretiert.

    Gibt es eine Möglichkeit dem 6. Client von vornherein zu verbieten sich zu verbinden? Falls nicht, kann ich dann wenigstens die gesendeten Nachrichten "eliminieren" bevor es zu dem accept durch den Server kommt?

    Mit freundlichen Grüßen
    Geggo



  • Hallo Geggo.

    Vielleicht willst du es so regeln, dass der Server, für jeden erfolgreich verbundenen Client einen Counter ++ macht und bevor die Clients accpeted werden prüfen ob dieser Counter < 5 ist.
    Wenn das Limit bereits erreicht ist, kannst du ihm ein Siganl senden, zum Beispiel "bye", woraufhin dieser die Client-Applikation beendet (oder das connecten).
    Das ist vielleicht nicht die optimale Lösung, aber sie erfüllt auf jeden Fall deine Zwecke.

    Mit freundlichen Grüßen
    DerCoder


Anmelden zum Antworten