[python] (no subject)

Radek Kanovsky rk na dat.cz
Pondělí Květen 10 19:33:10 CEST 2004


On Mon, May 10, 2004 at 06:47:18PM +0200, mucska na avu.cz wrote:

> ahoj
>
> mam problem s pripojenim prez socket mezi aplikaci pouzivajici
> python(client_Blender) a druhou aplikaci napsanou v delphi(server).
> bud mi aplikace pouzivajici python(blender) vypise "address already
> in use" nebo se vubec nespoji :( zrovna tak aplikace v delphi mi
> vypise ze je port pouzivanej, nebo vubec nic. Na kauzalitu vypisu sem
> neprisel, proste nekdy napise, nekdy ne.

Pokud je to na nejakem UNIXu/Linuxu a pokud to havaruje na serverovem
socketu, ktery dela bind, tak by mozna pomohlo tohle:

    sck = socket.socket(....) # vas socket
    sck.setsockopt(
        socket.SOL_SOCKET, socket.SO_REUSEADDR,
        sck.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR) | 1
    )

Pokud program havaruje a socket neni korektne uzavren (nebo je to spatne
naprogramovano :-), tak zustane socket po havarii (ukonceni programu)
urcitou dobu blokovany, coz se projevuje prave hlaskou "address already
in use" pri opetovnem pokusu o vytvoreni serveroveho socketu. Socket v
tomto stavu je videt ve vypisu netstatu (myslim ve stavu TIME_WAIT).

Zdravi

Radek Kaňovský



Další informace o konferenci Python