Hallo,
Ich habe ein kleines Spiel das ich nun mit einem MP-Modus ausstatten will und überlege mir gerade ein Protokoll.
Ist es Sinnvoll es einfach so simpel wie möglich zu halten? Also ich denke dabei an befehle wie:
Und als antwort vom server einfach ein "ok" bzw. "error eine fehlermeldung".
Also das wären halt ganz simple "konsolenbefehle". Wäre dann halt auch sehr einfach hackbar ohne gewisse gegenmassnahmen aber das lässt sich ja teilweise sichern.
Oder wäre es da schon besser wenn man das ganze komplexer aufbaut und z.b. ganze objekte verschickt?
Ausserdem klappt bei mir die Verbindung nicht wirklich. Ich habe versucht eine einfache Verbindung aufzubauen. Zuerst sende ich einfaches Connect und dann will ich den Namen mit "name blabla" setzen aber die Verbindung wird immer wieder geschlossen und ich weiss einfach nicht wieso. :/
Hier der Code:
Client beim Connecten:
Delphi-Quellcode:
procedure TForm1.Connect;
var
AMessage : string;
begin
TCPClient.Disconnect;
TCPClient.Connect;
SendMessage('connect');
if ReceiveMessage = 'welcome' then
begin
showmessage('Connected!');
repeat
Name := InputBox('CrazyCurve', 'Enter your name:', ''); // Diese box wird noch ausgeführt
SendMessage('name ' + Name); // Wird laut Log nicht zum server gesendet...
until (ReceiveMessage = 'ok');
showmessage('Name ok');
end;
end;
Server beim Execute:
Delphi-Quellcode:
procedure TForm1.TCPServerExecute(AContext: TIdContext);
var
AMessage : string;
Commands : TStringList;
First : string;
begin
AMessage := ReceiveMessage(AContext);
if AMessage = 'connect' then
begin
AnswerMessage(AContext, 'welcome');
end;
Split(' ', AMessage, Commands);
if Commands[0] = 'name' then
AnswerMessage(AContext, 'ok');
end;
Hier noch
SendMessage und
ReceiveMessage:
Delphi-Quellcode:
function TForm1.ReceiveMessage: string;
begin
Result := TCPClient.IOHandler.ReadLn();
ReceivedMessage := Result;
end;
procedure TForm1.SendMessage(AMessage: string);
begin
TCPClient.IOHandler.WriteLn(AMessage);
end;
Beim Server ist das noch mit
AContext von
TidContext.
Die 2 Projekte sind noch im Anhang.
Hoffe einer kann mir da weiter helfen, ich weiss wirklich nicht warum das programm da anhalten sollte :/
MfG