[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