AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Logistik (Mehrere Forms, ein Server)
Thema durchsuchen
Ansicht
Themen-Optionen

Logistik (Mehrere Forms, ein Server)

Ein Thema von S - tefano · begonnen am 29. Jun 2003 · letzter Beitrag vom 1. Jul 2003
Antwort Antwort
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#1

Logistik (Mehrere Forms, ein Server)

  Alt 29. Jun 2003, 13:05
Hi,

da ich jetz seit einem dreiviertel Jahr immer wieder gelegenheitsmäßig an einem Chat rumbastle und mir mit der zeit neue Features eingefallen sind, stehe ich dementsprechend wieder vor einem Problem.
Ich habe einerseits eine Art Haupt- Chatraum in dem alles über Broadcasts abläuft, so weit so gut. Jetzt möchte ich aber, dass sich zwei Leute separat nen direkten TCP/IP Chat aufmachen können.
Schön. Damit das ein User mit mehreren anderen gleichzeitig machen kann (also mehrere "2er Kanäle"), habe ich mir von euch hier was dazu erklären lassen, wie man eine Form mehrmals anzeigen und diese voneinander unterscheiden kann.
Das mal so zur ungefähren Stuktur meines Programmes. So, jetz zum Problem.
Es gibt zwei Möglichkeiten, diese Form "chatfähig" zu machen, also mit nem Client und nem Server (für beide Fälle) auszustatten.
Entweder mach ich wirklich auf jede Form einen Client und einen Server. Würd aber im Netzwerk ziemlich viel "Platz" verbrauchen, da dann jede Form, bzw. jede als Server fungierende Form nen eigenen Port braucht. Und der muss vor Erstellung des Servers erstmal noch auf "Freiheit" geprüft werden, also ob ich da überhaupt nen Server machen kann. Den Port muss ich dann bei jeder neuen 2er Sitzung dem Chatpartner mitteilen. Würd zwar gehen, aber is doch irgendwie blöd und umständlich.
Die andere von mir preferierte Möglichkeit wäre, dass jede Form nur einen Client bekommt, und auf der Hauptform dann ein Server steht, der nur einen Port belegt und die Verbindungen durch die Connections[] unterscheidet. Den Port müsste dann jedes Programm nur beim starten ermitteln (also nen freien) und den dann beim OnlineGehen broadcasten.
Das Problem daran:
Daten Empfangen würd wunderbar gehen. Einfach im entsprechenden Ereignis gucken von welcher Connection das kam und das dann an die entsprechende Form weitergeben.
Aber wie mach ichs dann beim Senden? Die ChatForm kann ja nicht die Hauptform in der usesListe haben, während die Hauptform das auch tut...
Und dann ist es auch egal, ob ich den Server noch in ne seperate Unit packe, da wäre dann halt dasselbe Problem der beidseitigen Kommunikation (also für denn Fall dass die Form als Server agiert, wenn man Client ist gibts ja keine Probleme diesbezüglich).

Ich stehe also wie im Betreff gesagt vor einem Problem der Logistik. Entweder hat jede Form beides, Client & Server, oder ich mache nur einen Server, kann mit diesem dann aber nicht beidseitig Daten austauschen (also von der Form aus was zum Server schicken aber gleichzeitig was vom Server gesagt bekommen können).
Gibts noch andere Wege?
Was würdet ihr mir empfehlen? Einfach jeder Form nen Server geben und hoffen dass das Prog nie auf ner großen LAN benutzt wird?

Bis dann,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#2
  Alt 1. Jul 2003, 20:33
Kann mir da wirklich keiner weiterhelfen?

Am besten wär, wenn ihr mir dann wenigstens schreiben würdet welche Variante ihr bevorzugen würdet (zum Beispiel aus der Sicht der Durchführung).

Danke schonmal,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Delphianer

Registriert seit: 19. Feb 2003
Ort: Rossau
149 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3
  Alt 1. Jul 2003, 21:47
Hallo,

wenn ich es richtig verstanden habe, besteht Dein Problem nur im gegenseitigen Referenzieren von Units. Das ist aber eigentlich kein Problem, wenn man weiß, daß man uses sowohl im interface-Teil als auch im implementation-Teil stehen haben kann. Zwei Units dürfen sich nicht gegenseitig im Interface-Teil referenzieren:

Delphi-Quellcode:
unit MyUnit1;

interface

uses
  MyUnit2;

....

unit MyUnit2;

interface

uses
  MyUnit1;

....
Aber wenn die eine Unit bei Interface und die andere bei Implementation steht oder beide bei Implementation, gibt es kein Problem:

Delphi-Quellcode:
unit MyUnit1;

interface

uses
  MyUnit2;

....

unit MyUnit2;

interface

....

implementation

uses
  MyUnit1;

....
Und in den meisten Fällen sollte die zweite Variante gehen.

Viele Grüße,

Lutz
Lutz
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#4
  Alt 1. Jul 2003, 22:27
Hey, danke!
Werds demnächst mal ausprobieren, dass das geht wusste ich noch garnicht...

Bis dann,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  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 08: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