AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ClientSocket sendet Buffer mit falschem Inhalt
Thema durchsuchen
Ansicht
Themen-Optionen

ClientSocket sendet Buffer mit falschem Inhalt

Ein Thema von pmw · begonnen am 10. Aug 2004 · letzter Beitrag vom 11. Aug 2004
Antwort Antwort
pmw

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

ClientSocket sendet Buffer mit falschem Inhalt

  Alt 10. Aug 2004, 10: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
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: ClientSocket sendet Buffer mit falschem Inhalt

  Alt 11. Aug 2004, 02:03
Moin!

Geben mal dem SendBuf() und ReceiveBuf() immer das 1. Zeichen vom String an beim Aufruf.

Bsp:
Code:
  ...Socket.ReceiveBuf(sText[1], Socket.ReceiveLength);
MfG
Muetze1
  Mit Zitat antworten Zitat
pmw

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

Re: ClientSocket sendet Buffer mit falschem Inhalt

  Alt 11. Aug 2004, 07:55
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



Viele Grüße
pmw
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 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