Socket->Connections[a] aber wie kommt man auf a ???



  • Hallo,

    ein Socket Server bekommt eine Nachricht von einem Client geschickt.

    Jetzt möchte ich genau diesem Client eine Antwort zurück schicken.
    Bei allen Anleitungen die ich gefunden habe wir dann :

    ServerSocket1->Socket->Connections[0]->SendText(text);

    geschrieben jedoch ist ja hier mit [0] immer die erste Verbindung gemeint.
    Wie kann ich jetzt herausfinden von wem das gekommen ist und die Connectionszahl als variable eintragen ???

    Hier noch der komplette code auszug

    void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
          TCustomWinSocket *Socket)
    {
    AnsiString text = Socket->ReceiveText();
    Memo1->Lines->Add(text);
    ServerSocket1->Socket->Connections[0]->SendText(text);
    }
    

    DRIVER26



  • Brauchst du hier nicht. Der Socket-Parameter in OnClientRead steht für die Verbindung zu dem Client, von dem gerade gelesen wurde.



  • schön wäre es wenn es funktionieren würd 😉

    kommt aber immer nur bei dem client an der sich als erstes angemeldet hat 😞



  • Bei diesem Code?

    void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
          TCustomWinSocket *Socket)
    {
      Socket->SendText("bla");
    }
    


  • ok so gehts prima 🙂 besten Dank !

    Aber eine generell frag
    kann man die Connection nummer irgendwie auslesen ????



  • M.E. nicht direkt, aber du könntest z.B. durch das Connections-Array iterieren und jeweils mit dem Socket-Parameter vergleichen.

    Ggf. solltest du anfangen, über eine Benutzerverwaltung und/oder ein eigenes Protokoll nachdenken, wo sich die Clients bei jeder Übertragung durch eine vorangestellte Nummer o.ä. identifizieren. Das wurde hier auch schon einige Male diskutiert, siehe FAQ und Suchfunktion.



  • hmm ok dann nochmal eine Verständnis Frage...

    dann sind die Connections Array Einträge also die Sockets ?



  • Na komm, das steht doch unmissverständlich in der Hilfe zu Connections!



  • ok sorry hast recht wollte das nur noch mal von jemand wo sich auskennt bestätigt haben 😉 als anfänger ist halt doch noch viele sehr sehr neu 😉


Anmelden zum Antworten