AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi gleichzeitiger Zugriff über Sockets
Thema durchsuchen
Ansicht
Themen-Optionen

gleichzeitiger Zugriff über Sockets

Ein Thema von Evilboyz · begonnen am 27. Jan 2003 · letzter Beitrag vom 22. Jan 2004
Antwort Antwort
Evilboyz

Registriert seit: 14. Jan 2003
78 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

gleichzeitiger Zugriff über Sockets

  Alt 27. Jan 2003, 15:25
Hallo allerseits,

ich hab mal eine allgemeine Frage, auf die ich bisher noch keine zufriedenstellende Antwort bekommen habe.
Wenn ich einen Server programmiere, der über die Socket-Komponente Verbindungen annimmt, dann können ja grundsätzlich mal viele Clients gleichzeitig eine Verbindung herstellen.
Was passiert nun, wenn zwei Clients genau gleichzeitig auf den Server zugreifen, also den gleichen Socket nutzen möchten?
Meine Vermutung ist, dass dieser Fall kein Problem darstellt, weil jedesmal eine neue Instanz erzeugt wird, ist das richtig?

  Mit Zitat antworten Zitat
Evilboyz

Registriert seit: 14. Jan 2003
78 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2
  Alt 28. Jan 2003, 09:28
Oder kann mir jemand sagen, wo ich solche Sachen nachlesen kann? Es ist ja doch wichtig, sowas zu berücksichtigen!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 28. Jan 2003, 11:51
Moin Evilboyz,

probiert habe ich's nicht, aber logisch wäre es, wenn in so einem Falle einer oder beide Clients einen Fehler zurückgemeldet bekommen (TClientSocket.OnError), dass die Verbindung fehlgeschlagen ist, und dann entsprechend erneut einen Verbindungsaufbau versuchen können/müssen.
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
chipie

Registriert seit: 22. Jan 2004
1 Beiträge
 
#4

Re: gleichzeitiger Zugriff über Sockets

  Alt 22. Jan 2004, 11:41
Ich denke, es hat bisher noch keiner Deine Frage gut beantworten können, da es wohl, sofern ich das Prinzip der Datenübertragung im Netzwerk richtig verstehe, nicht vorkommen kann, das 2 Datenpakete gleichzeitig eintreffen.
Denn du hast, wie ich annehme, nur eine Leitung, auf der die Daten herein kommen, und in dieser einen Leitung können natürlich nicht 2 Datenpakete nebeneinander übertragen werden, sondern immer nur hinter einander. Und selbst bei grossen Datenmengen werden ja nur viele kleine Datenpakete übertragen, und von deinem Rechner wieder zu großen Objekten zusammen gebaut.
Aber selbst wenn du 2 Leitungen hast, und irgendwie 2 Datenpakete ankommen, und diese auch noch von 2 Prozessoren gleichzeitig verarbeitet würden, selbst dann würde vor dem Listener nur ein Stack liegen, auf den diese Datenpackete gelegt werden, und da würde dann der Zufall entscheiden welches Paket zuerst ankommt.
Du siehst, wie man es auch wendet, die Datenpakete kommen nie gleichzeitig an, und du brauchst dir also um diesen einen Fall auch keine Sorgen zu machen *lächelt*
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: gleichzeitiger Zugriff über Sockets

  Alt 22. Jan 2004, 12:56
Natürlich können viele Clienten zur gleichen Zeit auf den gleichen Server Port kommunizieren. Das Berkeley Socket API multiplext diese vielen Client Packete und Indy erzeugt für jeden verbundenen Client ja einen eigenen Thread zur Verfügung. Alles andere wäre ja auch Schwachsinnig, da ein Server sehr viele Clienten zur "gleichen" Zeit bedienen muß. Allerdings über die Internet-Verbindung kann zur gleichen Zeit immer nur EIN TCP/IP Packet von EINEM Clienten empfangen werden. Dies ist fakt. Das spielt aber keine Rolle das die Dest IP + Port + Source IP + Session ID des Packetes exakt angibt wohin es weitergeleitet werden soll.

Gruß Hagen
  Mit Zitat antworten Zitat
Vjay

Registriert seit: 2. Dez 2003
Ort: Berlin/Eschede
481 Beiträge
 
Delphi 7 Professional
 
#6

Re: gleichzeitiger Zugriff über Sockets

  Alt 22. Jan 2004, 13:03
Also ich denke mal auch, es gibt ja nur einen Socket-Hauptthread, der auch wenn 2 Pakete gleichzeitig ankommen sollten (wie auch immer), die Unterthreads ja nur nacheinander erzeugen kann, also absolute Gleichzeitigkeit ist unmöglich.
Wer später bremst ist eher tot.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: gleichzeitiger Zugriff über Sockets

  Alt 22. Jan 2004, 14:27
Die Client-Threads werden erzeugt wenn ein neuer Client versucht auf einem Port zu verbinden. Sie laufen solange bis die Client Verbindung getrennt wird. In der Lebenszeit eines Client Threads wartet er nun auf TCP/IP Packete die an ihn addressiert sind. Das heist aber auch das andere Clienten und deren Serverseitigen Threads in parallel warten, auf dem gleichen Serve Port, aber NICHT auf dem gleichen Socket ansich.

Gruß Hagen
  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:23 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