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. |
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:
Nur diese schleife hält naürlich den ganzen client an.
while client.connected do
try ... ...recv... ... 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. |
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