Nefunkční ftp přístup

Martin Mačok martin.macok na underground.cz
Pátek Červenec 26 16:55:39 CEST 2002


On Fri, Jul 26, 2002 at 04:35:35PM +0200, Peter Surda wrote:
> > : Doteraz som si myslel, ze je to len ked sa pripajaju k tebe (teda ked ten port
> > : mas bindnuty)?

> > 	Pokud zavolam socket(), bind(), listen(), tak se ke me muze pripojit
> > libovolny pocet klientu (po accept(), samozrejme). K tomu abych ja mohl volat
> > bind() pro vic socketu na stejny port, musim IMHO po kazdem bind()u
> > na tom socketu dat setsockopt(..., SO_REUSEADDR, ...).

> Hej, ale diskusia bola o tom, ako sa to robi "naopak". Teda nie
> bind, ale connect.

bind() a connect() se nijak nevylucuji, naopak.

bind() slouzi k prirazeni adresy k socketu (lze to nazyvat treba
"pojmenovanim"), coz se obvykle provadi pro ucely naslouchajicich
socketu, protoze tam obvykle predem chcete specifikovat adresu a port.
Neznamena to ale, ze bind() lze pouzit pouze pro naslouchajici
sockety. V pripade connect() se tato adresa a port prideluje
automaticky - v pripade, ze si ji sam predtim explicitne nepriradite
rovnez pomoci bind(). Vetsinou ovsem automaticke prirazeni postacuje,
protoze je to jednodussi na naprogramovani a v 99% pripadu na odchozi
adrese/portu nezalezi.

bind() se normalne sam brani tomu, aby byl na stejnou adresu a port
pripojen vice nez jeden socket, co lze v pripade, ze na dane adrese
neni pripojen socket ve stavu listen, obejit pomoci zminovaneho
SO_REUSEADDR.

man ip
man tcp
man 7 socket

-- 
         Martin Mačok                 http://underground.cz/
   martin.macok na underground.cz        http://Xtrmntr.org/ORBman/
 
tldp.org mandrakeuser.org ll.cz freshmeat.net google.org kernel.org lwn.net


Další informace o konferenci Linux