[linux-l] sockets und ip's

Oliver Bandel oliver at first.in-berlin.de
Sa Okt 11 22:19:03 CEST 2003


On Sat, Oct 11, 2003 at 08:29:44PM +0200, Oliver Bandel wrote:
> On Sat, Oct 11, 2003 at 01:48:49PM +0200, Olaf Radicke wrote:
> > Am Mit, 2003-10-08 um 10.51 schrieb Kendy Kutzner:
> > > Hat Dir das Deine Frage beantwortet, oder kannst Du jetzt Deine
> > > Frage anders stellen, oder habe ich Dich jetzt endgueltig
> > > verwirrt? :))
> > 
> > Langsam kommt bei mir Licht in den Wald....
> > 
> > Ausgangspunkt bei mir war, das ich mit Python-Modul "Socket"
> > rum mache. Der eigentliche Socket-Prozess ist aber so gut
> > gekapselt, das ich eigentlich nicht wirklich weiß was ich
> > tue :-) 
> > 
> > Ich lausche mit dem Modul am Socket und wen eine Anfrage
> > kommt bekomme ich ein Objekt zurück. Daraus mache ich ein
> > thread. Während der neue Thread mit dem Klienten rummacht
> > lausche ich weiter und lasse mir weitere Objekte bei Verbindungen
> > zurück geben um damit weiter Threads zu starten. Da kam
> > mir die Frage woher zum Teufel wissen die die Threads  wem
> > sie ihre Pakete zu schicken haben. Ich teste ja nur lokal
> > auf meinem Rechner so das alle Klienten und der Server die
> > gleiche IP-Adresse haben.
> 
> Man hat ein listen-Socket. Das nimmt die Verbindung entgegen.
> Der syscall accept() liefert ein connection-Socket zurück.
> Auf dem kommuniziert man. Und kommen mehrere Verbindungen
> rein, dann hat accept() für jede verbindung ein Connection-
> Socket zurück gegeben.
> 
> Die Objekte werden das kapseln.
> 
> Hätte man geforkt, dann müsste man aufpassen, daß der
> eigentlich lesende Prozess der einzige ist, der auf dem
> Connection-Socket liest, damit es kein Datenchaos gibt.


Ausserdem wären im Eltern-Prozess, denn die Sockets nicht geschlossen
werden, haufenweise offene fd's angehäuft, was dann irgendwann mal
zu Problemen führt... ein Serverleben ist lang (naja, bei java-
Programmern vielleicht nicht unbedingt....;-))


Ciao,
   Oliver




Mehr Informationen über die Mailingliste linux-l