Witam,
mam kolejny problem z boost asio ;/ . Ale teraz z async_read_until . Chodzi o to , że gdy dostane dane od clienta to zawsze wywala mi errora "Połączenie przerwane przez system lokalny ". Nie wiem dlaczego .
Boost Asio - async_read_until - Połączenie przerwane przez system lokalny
- Rejestracja: dni
- Ostatnio: dni
- Postów: 37
- Rejestracja: dni
- Ostatnio: dni
- Postów: 37
Mimo tego , że w bufferze są dane to zawsze bytes_transferred ma wartość 0 ...
- Rejestracja: dni
- Ostatnio: dni
Jak możesz to wrzuć całą klasę sesji.
- Rejestracja: dni
- Ostatnio: dni
Masz sporo błędów w kodzie ale główna przyczyna, dla której dostajesz error code 1236 to to, że wołasz async_read_until bez zainicjowania end bajtu. Przez co później dostajesz timeout na timerze i woła się callback, który zamyka połączenie. Wtedy też woła się async_read_until z error codem 1236.
Poza tym masz UB w konstruktorze klasy TSession inicjujesz timer io_service pobranym z sock_ptr, który jeszcze nie został zainicjowany. Przypominam, że kolejność inicjalizacji na liście inicjalizacyjnej konstruktora zależy od kolejności deklaracji pól w klasie. W tym przypadku zadeklarowałeś sock_ptr przed timerem. Dalej... w kodzie masz pełno literówek/czasami brakuje &/const itd.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 37
W klasie brakuje const i & dlatego , że wtedy pisałem to z pamięci XD .
To jest poprawna klasa :
Chodzi o to , że przy odbieraniu pakietu EndByte ma w sobie jakąś wartość.

- Rejestracja: dni
- Ostatnio: dni
satirev napisał(a):
Masz sporo błędów w kodzie ale główna przyczyna, dla której dostajesz error code 1236 to to, że wołasz
async_read_untilbez zainicjowania end bajtu
- Rejestracja: dni
- Ostatnio: dni
- Postów: 37
Dobra koleś powiedział mi jaką wartością zainicjalizować EndByte . 0x0E . Ale po dostarczeniu 3 pakietu czyli hasła po aktualizacji już EndByte'u i Session Keya dostaje kolejny error... "Dostarczone dojście do pliku jest nieprawidłowe".