LNet- Verschiedene Informationen senden (mit send();)

Alle Fragen zur Netzwerkkommunikation
Antworten
torte
Beiträge: 13
Registriert: Sa 9. Jun 2012, 08:45

LNet- Verschiedene Informationen senden (mit send();)

Beitrag von torte »

Hallo,

ich versuche mich gerade daran ein kleines Spiel zu porgrammieren. Das funzt auch ganz gut.
Nun würde ich auch ganz gerne einen Multiplayer Modus einbauen.
Dazu müsste ich irgendwie die Informationen der Spieler an den Server/ bzw. die Clients schicken. Dafür habe ich mir mal das Gorilla-Projekt von Corpsman angeschaut.

Ich habe jetzt versucht die Informationsübertragung so umzusetzen, dass eine Zahl (als Referenz für die Art der Information) und dann die Information an sich gesendet wird.
Dazu habe ich ein kleines Testprojekt geschrieben, das ersteinmal nur die Referenzzahl auswerten soll. Doch das will nicht so recht bei mir klappen.

Folgender Quelltext des Servers:

Code: Alles auswählen

procedure Test(Code: Byte; aSocket: TLSocket);
begin
  Case Code of
   0: begin
     ShowMessage('Code =0');
   end;
   1: begin
     ShowMessage('Code =1');
   end;
  end;
end;
 
procedure TForm1.ServerReceive(aSocket: TLSocket);
var b, len: integer;
begin
  // der Server empfängt tatsächlich etwas !!!
 
  len:=aSocket.Get(b, 1)// damit hat der irgendein Problem
  // keine Fehlermeldung wenn b: Integer;
 
  // hier wird gestoppt da len wohl 0 ist?
  len:= aSocket.Get(b, 1);
  If len=0 then  // es wurde nichts empfangen
   exit
  Else Test(b, aSocket); // wird also im Moment nicht ausgeführt
end;


Und für das Senden vom Client:

Code: Alles auswählen

Procedure SendMessage(Code: byte; Message: String);
var data: Array of byte;
    i: integer;
begin
  setlength(data, length(Message) + 2)// länge von data = Länge der Nachricht +2;
  data[0] := Code;  // data[0]= Code
  data[1] := length(Message); // data[1]= Länge der Nachricht
  For i := 1 To Length(message) Do  // alle Char der Nachricht abgehen
    data[i + 1] := ord(message[i]);
  Form1.Client.Send(data[0], high(data) + 1); // Send(data, size); Send(Code, Größe der data)
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  SendMessage(0, 'Test');
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  SendMessage(1, 'anderer Test');
end;


Leider klappt das mit dem auslesen der Referenzzahl noch nicht so.

Ich nutze LNet.

Ich würde mich über Hilfe und mögliche Lösungen freuen.
Vielen Dank im Vorraus.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: LNet- Verschiedene Informationen senden (mit send();)

Beitrag von theo »

Habe gestern was hochgeladen. viewtopic.php?p=70099#p70099
Vllt. hilft dir das. Benutzt allerdings Synapse.

torte
Beiträge: 13
Registriert: Sa 9. Jun 2012, 08:45

Re: LNet- Verschiedene Informationen senden (mit send();)

Beitrag von torte »

Ok, danke für die schnelle Antwort.
Werde ich mir morgen mal in ruhe ansehen.

Und ob ich mein Ziel mit LNet oder Synapse umsetze ist mir letztenendes auch egal. :D

Antworten