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