Serwer boost::asio - Dziwne zachowanie kodu

0

Cześć. Próbuję stworzyć prosty, asynchroniczny serwer TCP, wzoruje się na pewnym przykładzie z dokumentacji boosta. Konkretnie chodzi mi o ten fragment:

CServer(IOService, EndPoint);
/*std::list<CServer> Servers;
Servers.emplace_back(IOService, EndPoint);*/

Gdy tworzę ten obiekt normalnie zostaję zaspamowany komunikatem Accepted z funkcji liste, mimo że nawet nic nie próbuje się połączyć, natomiast gdy stworze obiekt przez listę async_accept prawidłowo się blokuje i czeka na connecta. Jaka jest przyczyna takiego zachowania? Czemu normalnie to nie działa?
Dodam że gdy skompiluję jakiś przykład (np. ten - http://think-async.com/Asio/boost_asio_1_10_6/doc/html/boost_asio/example/cpp11/echo/async_tcp_echo_server.cpp) wszystko działa dobrze.

Kod - http://pastebin.com/FxqbXTcx

0

Co jest w złego w poczciwych socketach BSD, ze aż boosta używasz?

3

Tworzysz nienazwany obiekt serwera TCP, więc zanim zaczniesz pollować io_service i jakikolwiek event trafi do jego kolejki wywoła się destruktor serwera. W metodzie Listen nie obsługujesz error code, a dostajesz tam ERROR_OPERATION_ABORTED i potem pewnie coś jeszcze.

0

@satirev Wielkie dzięki, nie zwróciłem na to uwagi :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1