Parser bufora funkcji recv

0

Dzień dobry
chcę napisać program do obsługi połączenia z usługą internetową.

Ma to być alternatywny klient.

Dlatego nie mam dostępu do kodów i algorytmów używanego protokołu- muszę napisać sam.

Czytałem trochę forum i pewne wątki były bardzo interesujące

Zwracam się do was z prośbą o nasuniecie pomysłów co bym sam nie musiał wywarzać już otwartych drzwi.
Nie che wymyślać koła od nowa zwłaszcza jeżeli by miało być kwadratowe

Wracając do meritum, protokół który muszę obsłużyć nie ma w sobie informacji o długości poszczególnych pakietów,

Pakiety dzielą się za pomocą 2 bajtów 0xEE 0xEE. początkowy bajt mówi nam o rodzaju pakietu niestety cześć pakietów nie ma stałej długości.

czyli powinienem bufor podzielić na mniejsze ciągi zakończone xEEEE a ostatnią cześć bez zakończenia zostawić do doklejenia do następnej porcji danych

Moje pytanie jest takie czy istnieją jakieś biblioteki ułatwiające parsowanie takiego rodzaju pakietów ?

Czy obsługa bufora recv i obsługa dekodowania pakietu powinno być w osobnych wątkach ?

Nie wiem czy poprawnie myślę ale chcę najpierw stworzyć tablice z poszczególnymi pakietami a następnie obsługiwać to po kolei - ale zapewne to jest blednę podejście :) co o tym sądzicie

Informacje to będą kilobajty nie magabajty

0
  1. Musisz sobie szukać tego "zakończenia". Czytaj wielokrotność 2 bajtów z wejścia i testuj sobie zwykłym == czy trafiłeś na to na co chciałeś.
  2. Jeśli chodzi o obsługę pakietów to ja bym to jednak zrobił ładnie i obiektowo:
  • klasa bazowa dla wszystkich pakietów definiująca interfejs
  • klasy dziedziczące po jednej na każdy pakiet
  • mapa która dla typu pakietu (zakładam ze to jakiś identyfikator typu int) zwraca ci klasę/typ/obiekt którego masz użyć do przetwarzania pakietu.
  1. Cała logika przetwarzania danego typu pakietu w klasie pochodnej.

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