Einzelnen Beitrag anzeigen

Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#4

Re: läd socketserver auch ohne threads mehrere sachen gleich

  Alt 17. Mai 2005, 21:59
Ich denke mal du hast das problem, daß ich auch immer hab - keiner versteht was du machen willst - und es schaut auch unmöglich aus
Zumindestens so wie du es beschreibst.

Erst mal denke ich solltest du ein paar grundesätzliche Dinge verstehen.
Die hier benutzten componenten egal ob es sich um indy oder fastnet tserver/client socket handelt arbeiten ja alle nur mit dem Betriebssystem Windows.
Windows liefert dier jetzt also die schnittstelle und du verwendest die nur.
Jetzt hast du grundsätzlich 2 gängige protokolle die du verwenden kannst um daten zu verschicken.
TCP und UDP (es gibt noch mehr aber das ist gängig für dirrekte kommunikation).
TCP bedeutet eine stehende Verbindung - dh. du hast im prinzip eine Verbindung zwischen zwei Computern point to point über einen socket. Vereinfacht wäre ein socket die ip adresse und der port.

Ich bin mir hier nicht sicher was du willst, aber du kannst nicht mehrere verbindungen zum gleichen socket haben - das geht mit TCP nicht wirklich - dafür wurde das protokoll nicht gemacht.
Mit udp würde das wohl funktionieren weil UDP keine verbindung hält - du schickst praktisch daten ins nirvana und weißt nicht ob die ankommen oder nicht. Dafür hast aber auch keine point to point Verbindung.

Grundsätzlich ist der port den du bei den tcp delphi componenten angiebst ja nur der query port also der port mit der die verbindung aufgebaut wird.
Kommuniziert wird dann über einen anderen port und zwar den port den sich der server mit dem client ausmacht - bzw. gleich über mehrere wenn mehrere packete gleichzeitig verschickt werden.
TCP hat die angewohnheit die Ports rauf zu zählen bei jedem packet das verschickt wird und am anderen ende in der selben reihenfolge wieder zusammen zu bauen.
Die Bandbreite wird also immer voll ausgenutzt - ausser das Betriebssystem hat was dagegen oder du beschränkst das selbst.

So wie ich dich verstehe willst du streams (binärdaten) und text (strings) gleichzeitig verschicken und das am client aber getrennt behandeln über die gleiche tcp verbindung.
Grundsätzlich ist dem Socket oder Windows herzlich egal was du über den socket jagst - Mit TCP gibts nur die Möglichkeit ein eigenes Protokoll zu basteln und so die Binärdaten und Strings zu trennen.

Mit UDP wäre es möglich von verschiedenen sendern daten über den gleichen socket zu empfangen - wenns deine firewall zulässt.
Mit TCP wird das nicht wirklich gehen.

Arnulf
  Mit Zitat antworten Zitat