Einzelnen Beitrag anzeigen

pmw

Registriert seit: 9. Aug 2004
2 Beiträge
 
#1

ClientSocket sendet Buffer mit falschem Inhalt

  Alt 10. Aug 2004, 09:58
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:
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;
Viele Grüße
pmw
  Mit Zitat antworten Zitat