![]() |
ClientSocket sendet Buffer mit falschem Inhalt
Hallo!
Bei meinem Programm empfängt der ServerSocket aus unerklärlichen Gründen den falschen Buffer vom ClientSocket. Wenn ich sText (der Buffer der gesendet wird) mit einer Konstanten belege funktioniert es aber merkwürdigerweise. Und das obwohl ShowMessage in beiden Fällen jedes mal das selbe anzeigt. Ich verseh die Welt nicht mehr :(
Delphi-Quellcode:
procedure TfrmClient.btnVerbindeClick(Sender: TObject);
var SText: String; begin if MainForm.ClientSocket.Active = True then MainForm.ClientSocket.Active := False; MainForm.ClientSocket.Active := True; while MainForm.ClientSocket.Active = False do Application.ProcessMessages; // Warten bis Verbindung zum Server besteht { SeverSocket empfängt hier immer zufällige Zeichenketten } sText := '@0' + MainForm.frmMulti.edtSpielername.Text; ShowMessage(sText); // ShowMessage zeigt richtig "@0Mensch" an { Ende } { SeverSocket empfängt hier dei richtige Zeichenkette '@0Mensch' } sText := '@0Mensch'; ShowMessage(sText); // ShowMessage zeigt richtig "@0Mensch" an { Ende } MainForm.ClientSocket.Socket.SendBuf(sText, length(sText)); end;
Delphi-Quellcode:
Viele Grüße
procedure TMainForm.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket); var sText: string; begin SetLength(sText, Socket.ReceiveLength); Socket.ReceiveBuf(sText, length(sText)); ShowMessage(sText); { Im ersten Fall (sText := '@0' + MainForm.frmMulti.edtSpielername.Text) ist der Inhalt von ShowMessage zufällig (mal 'TMainForm', mal '127.0.0.1' usw.). Aber nie das selbe wie ShowMessage in btnVerbindeClick } { Im 2. Fall (sText := '@0Mensch') wird immer das richtige '@0Mensch' angezeigt. Also das selbe wie ShowMessage in btnVerbindeClick } end; pmw |
Re: ClientSocket sendet Buffer mit falschem Inhalt
Moin!
Geben mal dem SendBuf() und ReceiveBuf() immer das 1. Zeichen vom String an beim Aufruf. Bsp:
Code:
MfG
...Socket.ReceiveBuf(sText[1], Socket.ReceiveLength);
Muetze1 |
Re: ClientSocket sendet Buffer mit falschem Inhalt
Hi Muetze1!
Vielen Dank für deine Antwort. Ich habe gestern den ganzen Tag mit der Fehlersuche verbracht und ihn nicht gefunden. Deine Lösung funktioniert wie gewünscht :-D :bouncing4: :cheers: :bounce1: :dance: :hello: Viele Grüße pmw |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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