Hallo, ich möchte Informationen senden. Das mit receivetext hat schon funktioniert, daber das mit reveivebuf funktioniert nicht.
Ich habe eine einen eigenen Type, der jeweils im Serverprogramm und im clientprogramm deklariert ist:
Delphi-Quellcode:
Type
Taktion=(Texte,Setzen, Drop);
TInformation = record
Aktion: Taktion;
Kommentar: string;
end;
Erstmal will ich nur Textnachrichten senden können, und zwar per Button:
Delphi-Quellcode:
var
information:tinformation;
begin
information.Aktion:=texte;
information.Kommentar:=edit1.text;
clientsocket1.Socket.SendBuf(information,sizeof(information))
end
im server wird dann gelesen und an alle geschickt:
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
i: Integer;
information:tinformation;
begin
// Nachricht lesen
socket.ReceiveBuf(Information,sizeof(information));
if Information.Aktion=Texte then
begin
Log.Lines.Add(Information.Kommentar); // Nachricht lokal ausgeben
// und an alle verbundenen Clients senden
for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do
begin
serversocket1.Socket.Connections[i].SendBuf(Information,sizeof(information))
end
end
end;
im client wiederum wird das dann wieder ausgegeben:
Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
var
information:Tinformation;
begin
socket.ReceiveBuf(information,SizeOf(information));
if information.Aktion=texte then
log.Lines.Add(information.Kommentar)
end;
Nur leider kommt ein grober böser hässlicher Fehler, und zwar in der Server.exe
Theoretisch könnte ich die Informationen auch über sendtext machen, aber da ich da nur strings senden kann, ist das ziemlich quälend.