AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi läd socketserver auch ohne threads mehrere sachen gleichz.?
Thema durchsuchen
Ansicht
Themen-Optionen

läd socketserver auch ohne threads mehrere sachen gleichz.?

Ein Thema von prinz_inzide · begonnen am 15. Mai 2005 · letzter Beitrag vom 17. Mai 2005
Antwort Antwort
prinz_inzide

Registriert seit: 24. Jan 2005
64 Beiträge
 
#1

läd socketserver auch ohne threads mehrere sachen gleichz.?

  Alt 15. Mai 2005, 19:53
hi!

weil der idtcpclient keine onread mehthode hat möchte ich versdcuehn auf die sockets umzusteigen.
hab zwar ma was gesehn wie man mit dem umweg über thread lesen kann was der client geschikt bekommt, hat auch gefunzt leider bin ich dann bei der anpassung fehlgeschlagen:ich wollte den code(den ich hioer ausm forum hab) abändern dass ich den client auch dyn. erstellen kann und trotzdem sehe WANN er WAS gesendet bekommt. der client wird nämlich als element in einem array erstellt.

falls das umschreiben für jemand hier ne leichitgkeit wär, würd mich übelst!!! freuen!! hier mal der code:
Delphi-Quellcode:
Type
  TE = Class(TTHread)
    private
    protected
      Procedure Execute; override;
    public
      Constructor Create;
  End;
[...]
function te.execute:string;
var
  s:string;
Begin
  repeat
      if form1.client.Connected then begin
        s:=form1.client.Readln();
        if s<>'then result:=s;
      end;
  until terminated;
End;

constructor te.create;
begin
  inherited create(false);
end;
also der code ist nimmer 1:1 der der hier zu finden ist, hab execute schon verändert wie ich sie brauche, dass klappt auch..
jedenfalls ist jetzt mein problem, einen client dyn. zu erstellen un ihn dann "in diesem thread" zu erstelln und vorallem muss dann ja in der execute-funktion der name vom client angepasst werden für jeden erstellten client...
da hab ich leider net wirklich ne ahnnung wie ich das machen müsste/könnte.wenn da jemand ne lösung wüsst, das wär mir am allerliebsten!!

so, da ich dafür ja net die lösung kenne hab ich mir überlegt wieder auf die sockets "downzugraden"

nur müsst ich dann wissen, ob der serversocket von x clients gleichzeitig streams(buffer) geschickt bekommen kann(also die bandbreite dann gut ausnutzen würde) oder ob er ein stream nach dem anderen empfängt..
die sache is die, dass ich, wenn er von einem client "fertigempfangen hat" ihm SOFORT eine nachricht schicken muss (ne textnachricht).Aber während dessen musser weiter von den anderen clients empfangen..
geht das, ohne threads zu verwenden? weil die blick ich leider net so wirklich...

so dann eben während ich den post hier geschreiben hab is mir die idee gekommen idtcpserver und clientsocket so kombinieren..aber bis aufs connecten klappt da leider nix(net mal ne textnachricht schicken)

HOFFE ihr könnt mir helfen..

FETTES THX SCHON MAL!!

tim
  Mit Zitat antworten Zitat
Arnulf

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

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

  Alt 16. Mai 2005, 12:29
hi
warum kombinierst nicht einfach 2 tserver socket, dann hast mulitthreading gleich dabei...

hab sowas noch nicht probiert - ist nur ne idee.
Arnulf
  Mit Zitat antworten Zitat
prinz_inzide

Registriert seit: 24. Jan 2005
64 Beiträge
 
#3

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

  Alt 16. Mai 2005, 13:17
weil ich nur einen port zur verfügung habe...

trotzdem danke!
hat jemadn ne idee?
  Mit Zitat antworten Zitat
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, 20: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
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 03:58 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