Frage

Ich verwende die TServersocket -Komponente in meiner Delphi -Anwendung. Ich möchte Kundenverbindungen einschränken, sagen wir auf eintausend. Leider weiß ich nicht, wie ich das machen soll. Die Komponente liefert keine Eigenschaften wie "MaxConnections" oder einen anderen wie diesen.

Ich erstelle neue Server -Threads (TServerClientThread) mit dem OngetThread -Ereignis. Um die Anzahl der aktiven Verbindungen zu erhalten, habe ich die Eigenschaft "Socket.ActiveConnections" verwendet.

Leider weiß ich dann nicht, was ich tun soll. Ich habe versucht, keinen Thread in der OnGetThread -Prozedur zu erstellen, wenn die Anzahl der Verbindungen über dem Grenzwert liegt, aber nichts geändert hat - Client, obwohl es keine Informationen senden oder empfangen kann, kann er eine Verbindung zum Server herstellen und in Verbindung bleiben. Was können neue Clients nicht ermöglichen, sich zu verbinden oder ihnen einfach eine Verbindung herzustellen, sondern die Verbindung sofort zu brechen?

War es hilfreich?

Lösung

Das letzte Mal, als ich Delphi verwendet habe, war vor einigen Jahren, aber ich hatte eine ähnliche Situation zu tun und meine Erfahrung könnte für Sie nützlich sein: Ich hatte das gleiche Problem und wollte seit dem ((seit dem () nicht zu den "Indy" -Komponenten wechseln (seit dem ( Big) Anwendung war den Port nicht wert. Soweit ich mich erinnern kann, sollten Sie eine haben OnclientConnect Ereignis auf dem Server -Socket und hier wurde ich nach dem Limit überprüft:

.onClientConnect( Sender: TObject; aSocket: T... )
begin
    if( YourServerSocket.ActiveConnections > YourDefinedMaxConnections )
    begin
        // Drop the connection
        aSocket.Close;
    end;
end

Ich kann mich nicht mehr erinnern, aber ich glaube, ich habe etwas in diesen Zeilen gemacht, oder zumindest war dies das, was ich mir ausgedacht habe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top