TServerSocket - Wie mehrere Clientverbindungen verwalten? (Tipps ersucht)



  • Hi,

    kann mir jemand einen Tipp geben wie man die verbundenen Clients verwalten kann?

    Angenommen es verbinden sich z.b. 3 Clients nacheinander zum Server. Diese können dann via ServerSocket1->Socket->Connections[ x ] Daten gesendet werden.

    Mit einer simplen Schleife kann man nun via ServerSocket1->ActiveConnections auslesen wieviele Clients momentan noch verbunden verbunden sind.

    2] adressierbar sondern über Connections[1].

    Deshalb habe ich mir überlegt, den Socket-Handle in einer Struktur zu speichern, dazu eine Hilfsfunktion die die Socket->Connections[i]->SocketHandle via Schleife durchläuft und den dann als Rückgabewert den Schleifenzähler enthält.

    Im Prinzip nach folgender Methode:

    int TMyForm::GetSocketId(int socketHandle)
    {
     int slot = 0; 
     int sock = ServerSocket1->Socket->ActiveConnections;
    
     if(sock == 0) return 0;
    
     for(int i = 0; i <= sock; i++)
     {
      if (ServerSocket1->Socket->Connections[0]->SocketHandle == socketHandle)
      slot = i; 
      break;
     }
    return slot;
    }
    

    Ich hoffe, ihr versteht was ich meine! Für alle Tipps im voraus schon mal danke!



  • Hallo

    Die Idee halte ich schon mal für sinnvoll. Allerdings kannst du statt dem SocketHandle gleich den Zeiger auf die TCustomWinSocket-Instanz als "Anker" nehmen. Dann brauchst du auch nicht nach der Instanz zu suchen.

    bis bald
    akari



  • Gute Idee mit der TCustomWinSocket Instanz, darauf bin ich nicht gekommen. Danke!



  • Also das mit TWinSocket funktioniert super! 😃


Anmelden zum Antworten