SO_REUSEADDR, linux vs. cygwin
Ladislav Vaiz
ziav na adela.fel.zcu.cz
Úterý Duben 22 13:21:05 CEST 2003
Ahoj,
mam program, jehoz funkce je zalozena na tom, ze nelze vicekrat bind()nout
jeden TCP port. Toto bez problemu funguje v linuxu i v cygwinu.
Pokud ale pouziju setsockopt(..,SO_REUSEADDR,...) kvuli timeoutu pri
ukonceni programu, tak se chovani lisi. V linuxu vse funguje tak, jak bych
si podle man 7 socket predstavoval, tj. druhy proces dostane chybu, pokud
je prvni jeste aktivni. V cygwinu si muze port bind()nout vice procesu.
Je toto chovani spravne? Jak zajistit, aby mel port jen jeden proces?
Resenim bu bylo #ifndef CYGWIN setsockopt(...); #endif, timeout bych
ozelel, ale nejde to nejak jinak?
Diky
La'd"a
__... ...__ _.. . ___ _._ .____ __.. .. ._
A nejhorší ze všeho jsou trpaslíci.
Další informace o konferenci Linux