AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Gutes TCP Protokoll?
Thema durchsuchen
Ansicht
Themen-Optionen

Gutes TCP Protokoll?

Ein Thema von milos · begonnen am 13. Aug 2014 · letzter Beitrag vom 14. Aug 2014
 
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#1

Gutes TCP Protokoll?

  Alt 13. Aug 2014, 02:39
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:
Code:
join lobby main
Code:
set direction 90
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 = 'welcomethen
  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 = 'connectthen
  begin
    AnswerMessage(AContext, 'welcome');
  end;

  Split(' ', AMessage, Commands);

  if Commands[0] = 'namethen
    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
Angehängte Dateien
Dateityp: rar ServerClient.rar (4,98 MB, 18x aufgerufen)
Milos

Geändert von milos (13. Aug 2014 um 15:36 Uhr)
  Mit Zitat antworten Zitat
 


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 05:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz