Boost Asio - async_read_until - Połączenie przerwane przez system lokalny

0

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 .

0

Mimo tego , że w bufferze są dane to zawsze bytes_transferred ma wartość 0 ...

0

Jak możesz to wrzuć całą klasę sesji.

0

Tutaj kod :

0

;/

0

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.

0

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ść.

user image

0
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_until bez zainicjowania end bajtu

0

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".

0

Naprawione.

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