Ich wollte mit den TSocket Komponenten von Delphi 2009 einen Chat schreiben.
Der Server geht prima. Er kann Nachrichten annehmen und diese auch wieder versenden.
Wenn jedoch der Client was verschickt, so sagt der Server zwar er hat was erhalten, aber der Inhalt entspricht nicht dem, was in dem edit1.feld drin stand.
Hier die ganzen code ausschnitte:
Senden Button für Chat (Server und Client sind in einem Programm untergebracht):
Delphi-Quellcode:
procedure TForm1.SendenClick(Sender: TObject);
var
msg : TChat;
I : integer;
begin
if online_modus = 1 then begin
if online_client = 1 then begin // wenn client on ist
//msg.name := 'client';
msg.aktion := 'ch';
msg.chat := edit1.text;
edit1.Text := '';
Client.Socket.SendBuf (msg, SizeOf(msg)); // senden
end
else
if online_server >= 1 then begin // wenn server on ist
//msg.name := 'server';
msg.aktion := 'ch';
msg.chat := edit1.Text;
edit1.Text := '';
with Server.Socket do begin
for I := 0 to ActiveConnections-1 do
Connections[I].SendBuf (msg, SizeOf(msg))
end; {with}
end;
end;
Server empfangen
Delphi-Quellcode:
procedure TForm1.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
msg : TChat;
begin
showmessage('server hat etwas erhalten'); // dies diente dazu, um zu sehen ob der fehler doch evt. am server liegen könnte
if msg.aktion = 'ch' then begin // chat... // DIESER TEIL WIRD IRGENDWIE NICHT AUSGEFÜLLT
memo1.lines.add('client' + ': '+msg.chat);
end;
end;
Der record TChat:
Delphi-Quellcode:
type TChat = Record
chat : string[255];
name : string[20];
aktion : string[20];
end;
Da der Client alles prima empfängt, poste ich den TForm1.ClientRead Part nicht.
Leider seh ich da oben keinen Fehler o.O