Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TICTACTOE Multiplayer - TCP/IP (https://www.delphipraxis.net/9821-tictactoe-multiplayer-tcp-ip.html)

devnull 5. Okt 2003 13:13


TICTACTOE Multiplayer - TCP/IP
 
Hi,

ich habe auch ein TicTacToe ähnliches Programm (mit Delphi 6) geschrieben,
und wollte zu guter Letzt das Programm um einen Multiplayer-Teil über TCP/IP
erweitern.
Ich habe hier schon nach Units gesucht (auch gefunden); Leider verstehe ich
die Initialisierung der Schnittstelle nicht, auch nicht wie man Daten damit
überträgt.

Gibt es irgenwo eine Unit, mit der ich durch Prozedur-Aufruf die Schnittstelle
korrekt initialisieren kann, und dann auch noch STRING-zeichenketten versenden
kann



Schoneinmal Danke
devnull

Christian Seehase 5. Okt 2003 13:45

Re: TICTACTOE Multiplayer - TCP/IP
 
Moin devnull,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Da stellen sich mir ein paar Fragen:
Welche Komponenten hast Du denn gefunden?
Was verstehst Du unter Initialisieren der Schnittstelle?

Sollten es die Indys sein, die Du meinst, könntest Du hier mal nach z.B. Hier im Forum suchenOpenWriteBuffer suchen.
Dann müsstest Du vermutlich etwas dazu finden.

devnull 5. Okt 2003 14:46

Re: TICTACTOE Multiplayer - TCP/IP
 
1.) Fehler beim Erfassen von Daten,
und wie kann ein Server Daten vom Client bekommen ?
Ich kann weder Daten bekommen, noch senden.


Delphi-Quellcode:
uses idTCPServer, idComponent, idTCPComponent, idTCPClient,..;

[...]


   // Diese Prozedur sollte doch die Daten (hier: 'TESTZEILE') ab-
   // fangen und in ein EditFeld schreiben.
   // Geht aber nicht, da kommt ein Connection-Refuse ERROR
procedure TForm1.idTCPServer1Execute(ATh...);
begin
  Form1.Edit1.Text := AThread.Connection.ReadLn;
end;



   // Client sendet 'TESTZEILE' an Schnittstelle
procedure send_zeichenkette;
begin
  // Client initialisiert Server-Schnittstelle und connected
  idTCPClient1.Host := '127.0.0.1';
  idTCPClient1.Port := 5500;
  idTCPClient1.Connect;

  // Nicht senden, wenn nicht verbunden
  if idTCPClient1.Connected = false then exit;
 
  // Sollte TESTZEILE versenden
  try
    idTCPClient1.OpenwriteBuffer;
    try
      idTCPClient1.WriteLn ('TESTZEILE');
    finally
      idTCPClient1.CloseBuffer;
    end;
  finally
    idTCPClient1.Disconnect;
  end;
end;
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

flomei 5. Okt 2003 14:53

Re: TICTACTOE Multiplayer - TCP/IP
 
@devnull: Bitte benutz den Code-Highlighter indem du deinen Quelltext in [ delphi ] und [ /delphi ] (ohne Leerzeichen) einfasst.
Danke!

MfG Florian :hi:

Christian Seehase 5. Okt 2003 16:02

Re: TICTACTOE Multiplayer - TCP/IP
 
Moin devnull,

Du musst den Server auch auf Active = true setzen.

devnull 6. Okt 2003 16:09

Re: TICTACTOE Multiplayer - TCP/IP
 
Hi,

danke für deine Hilfe. Das hat jetzt geklappt. Ich kann jetzt auch Daten
vom Server zum Client schicken. Zurück klappt das noch nicht ganz, aber ich denke
das wird noch.

Eine allgemeine Frage:

Kann ich meinem Client Programm Befehle schicken ?
.Wenn der Client 'PRG:SHUTDOWN' empfängt, soll sein Programm beendet werden !
.Ich habs probiert mit "halt;", aber dann stürzt das ProgrammFenster ab
.(Fenster (Formular) schliesst sich, ist aber noch in TaskBar und im TaskManager sichtbar?!



Danke

Christian Seehase 6. Okt 2003 17:43

Re: TICTACTOE Multiplayer - TCP/IP
 
Moin Devnull,

Du musst unterscheiden zwischen Client Komponente und Clientprogramm (bzw. jeweils Server).
Je nachdem was man vorhat, kann es durchaus sein, dass man für Client- und Serverprogramm jeweils eine Client- und eine Serverkomponente braucht.

Für die weitere Frage gilt:
Neue Frage - neuer Thread.

devnull 6. Okt 2003 19:15

Re: TICTACTOE Multiplayer - TCP/IP
 
Abend,

jetzt klappt die Datenübertragung. Wenn mein Programm nun Daten übertragen hat,
muss dann ich nach jeder Übertragung idTCPClient1.Disconnect; aufrufen ?
PS: ich mach idTCPClient1.Connect; einmal beim Programmstart und überprüfe vor jedem
Senden, ob eine Verbindung besteht: --> Wenn nein, öffne ich ihn erneut !


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:56 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-2025 by Thomas Breitkreuz