ServerSocket: einzenlen bestimmten Client einen String senden?



  • Hi
    1)
    Ich habe ein ClentServer Programm bei dem ich mehrere Clents habe.
    Wie kann ich bei einem ServerSocket1Accept-Ereignis dem Client der gerade akzeptiert wurde einen String senden?

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

    So geht das nicht weil ich ja mehrere Client habe die eine Verbindung zum Server haben:

    Ich habe das mit SocketHandle versucht aber das funzt so net.

    ServerSocket1->Socket->SocketHandle->SendText("hallo");
    

    Wie kann ich wenn ich den Server auf

    ServerSocket1->Active = true;
    

    setze die Netzwerk IP ermitteln auf dem der Server erreichbar ist?

    Danke für jede Hilfe



  • Ich würde am liebsten anhand des SocketHandle die Connections-Nummer ermitteln.
    Damit ich dann dann z.B mit

    ServerSocket1->Socket->Connections[2]->SendText("Hallo");
    

    dem Client das Sende bei dem Die Connections-Nummer 2 ergeben hat, die ich durch die SocketHandle ermittelt habe.

    Ich will beim ServerSocket1Accept-Ereignis den SocketHandle ermitteln den ich dann abspeicher damit ich später dem Client etwas schiken kann. Das Problem ist nur wie
    ich anhand der SocketHandle die Connections-Nummer ermittel.



  • Hi
    Die Adesse des Servers kann ich glaube ich mit Socket->LocalAddress auselesen, oder?
    das Problem ist nur das ich immer die Loop IP 127.0.0.1 bekomme, aber genau die will ich ja nicht. ich will ja die 192.168.X.X haben.
    Vieleicht ist das ja auch falsch ich habe wenig Ahnung.

    In der Borland-Hilfe steht zu LocalAdress:
    Jede Adresse identifiziert das System und gibt die Schnittstellentypen an, die vom Socket unterstützt werden. Ein System kann mehrere Adressen unterstützen. LocalAddress enthält die für die Socket-Verbindung verwendete Adresse aus dem Bereich der vom lokalen System unterstützten Adressen.

    Nur wie kann ich die anderen Adresse auslesen?

    Die andere Frage wäre immer noch und auch die wichtigere Frage, wie ich anhand der Socket->Handle Nummer später dem Client etwas senden kann, ohne das ich es den anderen Clients schike die mit dem Server verbunden sind.

    Tut mir leid das ich so drängle aber ich muss bis Morgen mein Projekt fertiggestellt haben und ist hängt nur nach an dem beiden Problem um endlich das ganze zum Schluß zu bringen.



  • damit müssteste einen bestimmten clienten ansprechen können

    ziel_handle = handle an den gesendet werden soll
    for(int i=0;i<ServerSocket1->Socket->ActiveConnections;i++) {
        if(ServerSocket1->Socket->Connections[i]->Handle == ziel_handle) {
            ServerSocket1->Socket->Connections[i]->SendText("Ganz viel Text");
        }
    }
    

    das mit der server ip wollte ich auch mal machen aber hab keine lösung hinbekommen

    außerdem ist es sauberer ServerSocket1->Open(); anstatt ServerSocket1->Active = true; zu benutzen.


Log in to reply