nc: Address already in use

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Neděle Srpen 27 18:51:05 CEST 2006


On Thu, 24 Aug 2006, linux na edoras.cz wrote:

> "/usr/bin/nc -l 10.89.1.2 888 >vystup.log & ". (na ip 10.89.1.2 

A tohle Vám funguje, ano? Bez -p? Co je ten zač ten váš Netcat?

> Prisel jsem ale na zajimave chovani. Chvilku se zda ze vse funguje. 
> Zachvili ale nc spadne a na terminalu odkud jsem nc spustil, se objevi 
> hlaska "nc: Address already in use"

Pokud nějaký program komunikuje na určitém portu, pak je tento port 
blokovaný ještě nějakou dobu po uzavření příslušného socketu.
Lze to potlačit tím, že se na socketu nastaví SO_REUSEADDR (viz 
socket(7)). I když za starých časů to Netcat nastavoval.

> Napadlo me, ze mozna je obsazen port 888, nicmene netstat -l ukazuje, ze
> na danem portu nic nenasloucha (pokud je nc vypnuty).

Co takhle zkusit netstat -a? Pokud je ten port blokovaný nějakým nemrtvým 
socketem, tak je dost pravděpodobné, že tento socket nebude v poslouchacím 
módu.

Jinak Netcat je IMHO "nástroj na hraní" a ne univerzální "superdémon" jako
inetd, xinetd nebo tcpserver. Ostatně to, že "za chvíli spadne" je nejspíš
způsobeno tím, že nc -l přijme jedno spojení, a pak skončí. By design.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."





Další informace o konferenci Linux