Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy-TCP-Server wie? (https://www.delphipraxis.net/114018-indy-tcp-server-wie.html)

k4ni 18. Mai 2008 13:46


Indy-TCP-Server wie?
 
Hallo,

Wie ich in einem anderen thread schon gesagt hab, ich habe ein kleines spiel gemacht (4 gewinnt) und möchte es jetzt zu einem kleinen online-spiel machen.
Zuerst wollte ich die ganz normalen Server/Client-Sockets verwenden doch hab schon öfter gelesen das diese nicht sehr empfehlenswert sind.
Und ich hab auch schon oft gelesen das die Indy-Komponenten besser wären.

Jetzt will ich es auch mit diesen versuchen. Also muss ich da schon die IdTCPServer/IdTCPClient benützen? Sind das schon die richtigen?
Denn die verwirren mich ein bisschen viel. Wenn ja, gibt es irgendwelche Tutorials oder beispiele-projekte dafür?

PS: Ich hab noch nie mit Thread gearbeitet.

k4ni 18. Mai 2008 18:52

Re: Indy-TCP-Server wie?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sorry für bump aber das problem hat sich gewendet.
Naja was heißt gewendet..
Ich hab ein gutes beispiel für einen indyTCP-server/client gefunden und hab das dann auch gleich angepackt und alles editiert.
Bist jetzt läuft alles echt gut :) Das einzigste problem ist der Client beim empfangen.
Sobald man auf den login-button klickt geht eine schleife los, so in etwa:
Delphi-Quellcode:
while client.connected do
 try ...
    ...recv...
  ...
Nur diese schleife hält naürlich den ganzen client an.

Frage: Sollte ich das überhaupt so machen? Wenn ja dann wohl in einem andeen Thread, oder?

PS: Wie gesagt, hab noch nie mit threads gearbeitet...wird vermutlich mein erstes mal werden :)

Die source wie ich alles hab is im anhang.

Real-TTX 21. Mai 2008 20:48

Re: Indy-TCP-Server wie?
 
Dein Problem sollte mit dieser While-Schleife zu tun haben... Ja... Führe das doch einfach mal in der IDE aus und setze ein paar Haltepunkte und lass ein paar Veriablen überwachen? Ich denke er geht nicht mehr aus dieser Schleife raus... Was passiert wenn du es so ausführst:

Delphi-Quellcode:
procedure TForm1.RecvBuf();
var
  packet: TPacket;
begin
while IdTCPClient.Socket.Connected do
  begin
    try
      IdTCPClient.Socket.Recv(packet, sizeof(packet));
      case packet.header of
        01: LoginPacket(packet);
        Exit; // <--- Mit diesem Exit...
      end;
    except
      Memo1.Lines.Add('.');
    end;
  end;
end;

Lass doch mal "packet" überwachen...

LG, Real-TTX


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz