Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem TCP klient, linux, c++

Dobrý den,
v C++ jsem si napsal jednoduchý server (na linuxu).
Vycházel jsem z informací popsaných zde: http://www.builder.cz/rubriky/c/c--/tcp-server-v-l inuxu-156219cz

Přenos dat mezi serverem a klientem (taky napsaný v c++) funguje bez problémů.
Ale při testování jsem narazil na zajímavou chybu.
Zapnu server a připojím se na něj pomocí klienta, klient pošle data, server je zpracuje a pošle odpověď.
Potom server ukončím a když se ho pokusím znovu rychle zapnou, vypíše mi chybu při pojmenování socketu, tedy funkce bind.
Stačí počkat pár vteřin a další pokus zapnutí serveru se již podaří.

Je to normální chování, nebo by měl server naskočit hned?

Předmět Autor Datum
V názvu vlákna měl být "server" namísto "klient".
Luk 27.03.2013 14:12
Luk
Neviem nechce sa mi ten link studovat ale ked nieco nabindujes tak nemusis to pred ukoncenim program…
MM.. 27.03.2013 14:43
MM..
pred tím než se server ukončí, tak pozavírá všechny otevřené sockety.
Luk 27.03.2013 14:53
Luk
Řešení: static const int flag = true; setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag))…
Luk 27.03.2013 19:09
Luk
ok :) Ale preistotu si aj skontroluj ze ci ked zatvaras sockety davas tym funkciam spravne pointre,… poslední
MM.. 27.03.2013 19:40
MM..

ok :) Ale preistotu si aj skontroluj ze ci ked zatvaras sockety davas tym funkciam spravne pointre, a nie nejake haluze v parametroch, potom by to samozrejme nic nezavrelo. Ale ako som pisal neviem ci tie 3sekundy spozdenie su normalne u linuxu mozno to je aj normalne aj ked ich korektne zavres, neviem zhlavy.

Zpět do poradny Odpovědět na původní otázku Nahoru