AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TCP-Client und -server in einer Applikation?
Thema durchsuchen
Ansicht
Themen-Optionen

TCP-Client und -server in einer Applikation?

Ein Thema von Marco Steinebach · begonnen am 20. Mai 2024 · letzter Beitrag vom 25. Jun 2024
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#1

TCP-Client und -server in einer Applikation?

  Alt 20. Mai 2024, 08:51
Hallo zusammen,
Ich möchte ein einfaches Chat-Programm erstellen, dass, hier im lokalen Netz, Nachrichten unter, vorerst, zwei Rechnern austauschen kann.
Kann ich einfach ein Programm, das beides, also den Server und den Client enthält, basteln, oder gibt's dafür sinnigere Lösungsansätze?
Also das Programm soll tun:
Verbinde dich mit dem Client auf IP 192.168....
Wenn du ihn gefunden hast, zeig das an.
Drücke ich auf (senden) schick ihm, also dem Client, eine Nachricht.
Und jetzt warte, bis der andere PC, mit dem du verbunden bist, dir eine Nachricht zurückschickt (deshalb kam ich auf Server).

Kann mich da mal bitte jemand auf die richtige Spur setzen?

Herzlich grüßt
Wandogau
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.647 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TCP-Client und -server in einer Applikation?

  Alt 20. Mai 2024, 11:34
Ein sehr simples Beispiel findest du hier in der Doku:
https://docwiki.embarcadero.com/Code...ocket_(Delphi)

Andere Komponenten sind besser, aber den Zweck erfüllt es.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TCP-Client und -server in einer Applikation?

  Alt 20. Mai 2024, 11:40
Moin,

ich habe so etwas mal mit den Indys (https://www.indyproject.org/) gemacht,
(TidTCPClient, TidTCPServer), allerdings weiss ich nicht, ob die unter
Delphi 5 nutzbar sind.

Gruss
Christian
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#4

AW: TCP-Client und -server in einer Applikation?

  Alt 20. Mai 2024, 12:02
Hallo zusammen,
Jep! Die Indys functionieren sogar unter D5 noch, sogar als aktuelle Version.
Mir war nur nicht klar, ob man eine Server- und eine Client-Komponente im selben Programm haben kann, ohne, dass die sich in die Haare kriegen.

Also erstmal: lieben Dank!

Herzlich grüßt
Wandogau
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.623 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: TCP-Client und -server in einer Applikation?

  Alt 20. Mai 2024, 12:31
Es gibt prinzipiell keinen Grund, nicht in demselben Programm eine (Indy-)Client- und eine Server-Komponente zu verwenden. Allerdings brauchst Du das für diesen Anwendungsfall nicht, denn wenn die Verbindung einmal hergestellt ist, kann man darüber Daten in beide Richtungen schicken.
Falls mal mehr als zwei Programme miteinander kommunizieren sollen, bietet es sich aber eher an, dass ein Server die Verbindung zwischen allen herstellt.

Wobei: Man kann das natürlich auch auf andere Weise lösen, z.B. dass man die Nachrichten über einen File-Share austauscht. Das ist deutlich simpler.

Oder man macht es wie DeltaChat und verwendet E-Mail als Transportprotokoll.

Es kommt halt immer auf die konkreten Anforderungen an:
  • Sollen sich die Programme automatisch finden?
  • Wie sicher soll die Verbindung sein? (Anmeldung bzw. Tranmsportverschlüsselung)
  • Geht es nur um's LAN oder soll die Verbindung über's Internet funktionieren?
Thomas Mueller

Geändert von dummzeuch (20. Mai 2024 um 13:05 Uhr)
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#6

AW: TCP-Client und -server in einer Applikation?

  Alt 20. Mai 2024, 13:26
An den Austausch über eine Datei hatte ich auch schon gedacht, aber andererseits, dachte ich , müsste es ja über TCP auch gehen.
Wie, um Himmelswillen, kann ich denn zwei Clients, ohne Server, miteinander verbinden, so, dass die dann auch auf Nachrichten vom anderen Client warten?

Das Programm ist, am Ende, nur dafür da, dass ich an unseren Senderechner (für unseren kleinen Radiosender), eine Nachricht schicken kann, und der Moderator kann antworten, sprich auch wieder eine Nachricht an denjenigen, der die ursprüngliche Nachricht gesendet hat, schicken.
Soll nur! im Lokalen Netz laufen.

Ich häng' meinen Entwurf mal dran, im Moment ist der, natürlich, weder schön noch sinnvoll, aber wenn ich das Programm auf zwei Rechnern laufen lasse, finden die sich auch, aber:
vom einen Rechner werden die Nachrichten auf dem anderen Empfangen, aber andersherum nicht.
Wenn ich das Programm schliesse, kriege ich einen Socket-Fehler 1053.
Vielleicht könnte da mal jemand von euch draufschauen?
Ich häng' das Ganze hier mal an!

Schonmal lieben Dank und herzliche Grüße
Wandogau
Angehängte Dateien
Dateityp: zip NetMessage.zip (3,5 KB, 7x aufgerufen)
Marco Steinebach
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#7

AW: TCP-Client und -server in einer Applikation?

  Alt 20. Mai 2024, 20:19
Wie, um Himmelswillen, kann ich denn zwei Clients, ohne Server, miteinander verbinden, so, dass die dann auch auf Nachrichten vom anderen Client warten?
"Server" ist nur derjenige, der auf eingehende TCP-Verbindungen wartet. Sobald die Verbindung aufgebaut ist, können beide Peers über die Verbindung sowohl senden als auch empfangen. Dazu hat die Verbindung einen Stream in jede Richtung, einen in den geschrieben und einen aus dem gelesen werden kann.

Die IdTelnet-Komponente ist ein Beispiel, hier wird zum Empfangen ein Thread verwendet um laufend auf Nachrichten vom Server zu warten, während das Senden nur vom Hauptthread aus geschieht.


https://eng.libretexts.org/Bookshelv...0two%20sockets.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#8

AW: TCP-Client und -server in einer Applikation?

  Alt 24. Mai 2024, 15:53
Hallo zusammen,
Okay, ich hab jetzt echt alles versucht, aber ich verstehe immernoch nicht, wie ich die beiden Clients, ohne Server, verbinden soll.
Trage ich bei beiden die IP und den Port des jeweils anderen PC's ein und führe connect aus, kriege ich keine Verbindung, was mich irgendwie nicht wirklich wundert.
Aber wie dann?
Kann mir bitte mal jemand auf die Sprünge helfen?

Vielleicht könnte sich doch mal jemand mein Beispiel ansehen, mit Client und Server ist ja auch völlig in Ordnung, aber, wie oben geschrieben, hängt sich das Prog spätestens beim Close komplett auf, und wenn ich es auf zwei Rechnern gestartet habe, geht der Nachrichtenaustausch zwar in die eine, aber nicht in die andere Richtung.

Herzlich grüßt und bedankt sich schonmal für eure Hilfe
Wandogau
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#9

AW: TCP-Client und -server in einer Applikation?

  Alt 25. Jun 2024, 14:24
Hmmm, ich meine mich zu entsinnen, daß die Indys recht kompliziert zu handhaben sind. Dynamische Erzeugung der Komponenten, wie in Deinem Versuch, gehört auch dazu. Also probier es doch lieber erstmal einfacher aus und leg die Komponenten in einem neuen Projekt auf die Form1 und schau was Du damit tun kannst. Alternativ kann ich die ICS von Overbyte wärmstens empfehlen, die ebenfalls kostenfrei zu erhalten sind.
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:59 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