Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TClientSocket verschluckt eine Nachricht (https://www.delphipraxis.net/89449-tclientsocket-verschluckt-eine-nachricht.html)

Quake 31. Mär 2007 10:05


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:
 
  TCPClientSocket.Open;
  iMsgNr:=0;
  TCPClientSocket.Socket.SendText('Test:'+IntToStr(iMsgNr));
  inc(iMsgNr);
Diese Nachricht (iMsgNr=0) kommt nicht beim Server an.
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

Zacherl 31. Mär 2007 10:56

Re: TClientSocket verschluckt eine Nachricht
 
Guck dir mal meine Unit ProtocolUtils an .. du findest sie hier im Board unter den Suchbegriffen "Protokoll Sockets".

Quake 31. Mär 2007 16:43

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.

SirThornberry 31. Mär 2007 17:17

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?

Muetze1 31. Mär 2007 18:49

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.

SirThornberry 31. Mär 2007 18:53

Re: TClientSocket verschluckt eine Nachricht
 
@Muetze1: Ist die Open-Methode nicht blockierend?

Muetze1 31. Mär 2007 18:54

Re: TClientSocket verschluckt eine Nachricht
 
afair nicht.

Quake 31. Mär 2007 19:12

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