![]() |
TClientSocket verschluckt eine Nachricht
Hallo,
ich habe mir zum Testen zwei kleine Programme geschrieben, ein Server und einen Client. Das funktionier auch alles bis auf eine Kleinigkeit. Beim Client möchte ich beim Programmstart eine Nachricht an den Server schicken. Dazu rufe ich im FormCraete folgendes auf:
Delphi-Quellcode:
Diese Nachricht (iMsgNr=0) kommt nicht beim Server an.TCPClientSocket.Open; iMsgNr:=0; TCPClientSocket.Socket.SendText('Test:'+IntToStr(iMsgNr)); inc(iMsgNr); Rufe ich später per Buttonklick SendText auf, empfängt der Server die Nachricht, dann natürlich mit einer högeren iMsgNr. Ich habe auch schon probiert, das SendText und das inc(iMsgNr) im FormCreate auszuklammern, dann wird per Buttonklick auch die iMsgNr 0 gesendet. Wie kann ich jetzt diese Nachricht aber beim Start meines Programms die Nachricht verschicken. ciao Martin |
Re: TClientSocket verschluckt eine Nachricht
Guck dir mal meine Unit ProtocolUtils an .. du findest sie hier im Board unter den Suchbegriffen "Protokoll Sockets".
|
Re: TClientSocket verschluckt eine Nachricht
Sorry, aber dein Thread bringt mich aber nicht weiter. Das Problem was ich habe ist ja nicht das interpretieren meiner Nachricht oder das eine Nachricht zerstückelt usw. ankommt, sondern die Nachricht die im FormCreate gesendet wird kommt gar nicht beim Server an. Alle Nachrichten, die ich später sende kommen korrekt beim Server an.
|
Re: TClientSocket verschluckt eine Nachricht
Hmm, vielleicht liegt es daran das zu dem Zeitpunkt noch keine Nachrichtenschleife läuft. Hast du mal versucht in SendText rein zu steppen?
|
Re: TClientSocket verschluckt eine Nachricht
Kannst du dir vorstellen, wie schnell deine Procedure da oben ausgeführt wird? Kannst du dir vllt. auch vorstellen das es etwas Zeit braucht um zu einem Namen eine IP zu ermitteln und ihn zu kontaktieren? Von daher: Wenn du Open aufrufst, dann kannst du nicht sofort lossenden, da die Verbindung erstmal aufgebaut werden muss. Wenn dieser Vorgang fertig ist oder fehlgeschlagen ist, dann wird dir mit einem Event Bescheid gegeben. Und wenn dir eine positive Antwort gegeben wird, dann kannst du deine Nachricht lossenden.
|
Re: TClientSocket verschluckt eine Nachricht
@Muetze1: Ist die Open-Methode nicht blockierend?
|
Re: TClientSocket verschluckt eine Nachricht
afair nicht.
|
Re: TClientSocket verschluckt eine Nachricht
Danke, ich probier das senden mal im OnConnect.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz