TserverSocket Fehlerhafte String übertragung



  • Hier bin ich mal wieder mit meinen Tserver bzw. TClient Socket Problemen;

    Um die Programme zu testen (eines hat eben die TClientsocket, das andere TServersocket), lasse ich sie über 127.0.0.1 verbinden. Funktioniert auch immer super, der client schickt einen befehl an den server, der verarbeitet ihn und schickt einen anderen string wieder zurück.

    Nun wollte ich mal eine funktion einbauen die registriert wieviele Pakete versendet wurden, die hab ich dann in OnWrite (vom ClientSocket) reingeschrieben.

    Und siehe da auf einmal empfängt der der Client nur mehr scheise! Auch nachdem ich die funktion wieder ausgebaut habe funktioniert es nicht. Nun hab ich mal ein bisserl debuggt. 😡

    Ich bin draufgekommen das der string vom client verschickt wird, das ihn der server empfängt, verarbeitet und eben einen string wieder zurückschickt. Der empfangen String ist aber beim Client leer!!

    Brauche jetzt (wie ihr wohl gemerkt habt 😉 ) dringend hilfe da ich sonst einfach nicht weiter entwickeln kann. 😞



  • Zeig doch bitte mal den code der Methoden fürs senden/empfangen vom Server/Client.



  • Senden vom client (unter onconnect);

    ClientSocket->Socket->Sendtext(108);
    

    Empfangen des Servers (unter OnClientRead);

    empfangen=Socket->ReceiveText();
     //hier steht dann was das Prog mit dem String anfangen soll
    

    Senden des Servers;

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

    und schließlich das empfangen beim client (dort wo ich den fehler vermute);

    empfangen=Socket->ReceiveText();
    


  • Dein Code scheint soweit in Ordnung. Hast du schon mal versucht 2 mal vom Server den text zu senden und dir dann mal "empfangen" angesehn??

    Ich hatte das Problem auch mal, da hab ich dann beim ersten senden nichts erhalten und beim 2. senden kamen beide Texte an. Hab dann ein Application->ProcessMessages(), dazwischen gepackt und es lief wieder. Vielleicht hilft dir das ja weiter?!



  • hmm, das ist möglich, das wird jetzt ein bisserl dauern da mein protokoll sowas eigentlich nicht vorraussieht.



  • Beim zweiten mal sind wirklich beide angekommen.

    Danke, jetzt kann ich endlich weiter machen. 🙂



  • 😃


Anmelden zum Antworten