Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi ClientSocket Text mit Start und Endekennung senden (https://www.delphipraxis.net/84386-clientsocket-text-mit-start-und-endekennung-senden.html)

torud 16. Jan 2007 11:20


ClientSocket Text mit Start und Endekennung senden
 
Hallo Wissende,

Ich möchte über die ClientSocket eine Verbindung zu einer anderen Software aufbauen und dieser einen Text senden. Die Verbindung habe ich schon hinbekommen. Das Senden funktioniert auch.

Aber leider will das andere Programm eine Start- und Endekennung für das Textprotokoll haben. Start = 2 und Ende ist 3. Mein Kollege sagte mir, dass ich das als Asci-Code schicken muss. Damit stellt sich mir aber die Fragen, wie ich das machen muss???

Bisher bin ich hier und habe aber keinen Erfolg:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  int_response:integer;
begin
      int_response:=ClientSocket1.Socket.SendText(chr(2) +  'OPR HB_WCH_2007' + chr(3));
      ShowMessage(inttostr(int_response));
end;
Es kommt immerhin was zurück, aber das Tool macht verständlicherweise nicht, was es soll. Sicher, weil die 2 und die 3 nicht im richtigen Format vorliegen!? :( Wer kann helfen?

marabu 16. Jan 2007 11:34

Re: ClientSocket Text mit Start und Endekennung senden
 
Hallo Tom,

Start-Of-Text (STX, #2) und End-Of-Text (ETX, #3) hast du richtig codiert. Da muss es noch ein anderes Geheimnis geben, bis dass der Server mit dir kommuniziert. Eventuell musst du noch ein bestimmtes End-Of-Message Zeichen (z.B. RS, CR, oder LF) schicken, weil das Protokoll die Übergabe mehrerer Befehle erlaubt.

Freundliche Grüße

chrisw 16. Jan 2007 11:40

Re: ClientSocket Text mit Start und Endekennung senden
 
Vielleicht erwartet das Programm tatsächlich eine 2 und 3 (also ASCII 50(#50) und 51(#51)) !

Probier das doch mal !

Muetze1 16. Jan 2007 12:13

Re: ClientSocket Text mit Start und Endekennung senden
 
Zitat:

Zitat von chrisw
Vielleicht erwartet das Programm tatsächlich eine 2 und 3 (also ASCII 50(#50) und 51(#51)) !

Dann würde er bei "2007" schon wieder einen neuen String anfangen...

Ich weiss nicht, ob du die ShowMessage() als das ansiehst, was "zurück kommt", aber das ist nichts, was dir das andere Programm antwortet sondern einfach nur, wieviel Bytes übertragen wurden. Daher ist dies niemals eine Antwort vom Empfänger.
Zitat:

Zitat von OH
SendText returns the number of bytes sent. Note that this may be less than the length of the string S if the socket is nonblocking.


torud 16. Jan 2007 12:30

Re: ClientSocket Text mit Start und Endekennung senden
 
Hm, also dieser Tipp ist schon mal nicht schlecht, denn ich denke, wenn ich da eine 0 zurückbekomme, hat die Komponente nichts gesendet...!?

Muetze1 16. Jan 2007 15:43

Re: ClientSocket Text mit Start und Endekennung senden
 
Zitat:

Zitat von torud
Hm, also dieser Tipp ist schon mal nicht schlecht, denn ich denke, wenn ich da eine 0 zurückbekomme, hat die Komponente nichts gesendet...!?

Dies stimmt nur, wenn der Socket im "blocking" Modus betrieben wird. Im "non-blocking" Modus würde er den Rest zum Senden zu einem späteren Zeitpunkt anfragen.

torud 16. Jan 2007 19:37

Re: ClientSocket Text mit Start und Endekennung senden
 
mir hats jedenfalls geholfen, denn so wusste ich, dass ich entweder keine daten verschickt habe, ober das was rausging und zum debuggen war der hinweis recht hilfreich...es funzt jetzt im überigen auch. danke...

Delphi-Quellcode:
ClientSocket1.Socket.SendText(chr(2) +  '1 OPR HB_WCH_2007' + chr(3));
so musste es sein. es fehlte nur ne id am anfang. war wohl ne eigenart, des programmierers...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz