TCP kapcsolat recv nem tér vissza

Fórumok

Írtam egy kis servert (s1), amihez ha kapcsolódik egy kliens, akkor a server kapcsolódik egy másik serverhez (s2). Az S2 egyenlőre annyit csinál, hogy amit kap azt szétküldi a többi kapcsolódott clienshez. Ha az S1-hez kapcsolódik több kliens és az egyik küld valamit, akkor az egyik a küldőn kívül megkapja megkapja. De ezt követően a S1 nem tér vissza a recv(..) az első kiolvasást követően.
Ha csak egy cliens csatlakozik a S1-hez és egy másik a S2-höz, akkor tökéletesen kommunikál egymással a két kliens. (S1 ugyebár csatlakozik S2-höz)

Esetleg valakinek van ötlete.

Hozzászólások

a recv blokkoló művelet alapesetben!

Próbáld meg így is:

int option= 1;
ioctl (sock, FIONBIO, &option);

Az open(2) nálam azt írja (persze lehet hogy téved, vagy rosszul értem):
O_NONBLOCK or O_NDELAY: When possible, the file is opened in non-blocking mode. (...) This mode need not have any effect on files other than FIFOs.

read() nem jo? probald meg read+select-tel.