Aplikacja klient-serwer na socketach - synchronizacja pakietów

0

Cześć,
mam problem z moja aplikacja Klient-Serwer opartej na socketach. Kiedy wysylam pojedyncze informacje wszystko jest ok. Problem pojawia sie kiedy chce wyslac z serwera do klienta kilka socketow w petli. Pojawia mi sie error zwiazany z synchronizacja pakietow. Zakladam, ze spowodowane jest to przez to, ze klient nie zdazy obsluzyc jednego socketu a juz dostaje kolejny.

 
for i:=0 to liczba_wierszy do
begin
send(Klient, wiersz[i], SizeOf(wiersz[i]), 0);
end;

Pominmy fakt poprawnosci kodu powyzej (pisalem na szybko;) ), chodzi o to zeby pokazac Wam jak wysylam dane. Mozna uzyc sleep ale nie zawsze bedzie to potrzebne no i na pewno spowolni program...

Czy istnieje jakies gotowe rozwiazanie tego problemu? Chcialbym uniknac koniecznosci potwierdzania odbioru pakietow przez klienta przed wyslaniem przez serwer kolejnego.

Jest mozliwosc np zbierania tych socketow do jakiegos buffora czy kolejki (w taki sposob aby program nie wyrzucal bledu synchronizacji) i obslugiwanie ich po kolei?

pozdrawiam!

0

Nie wiem dokładnie jak to u Ciebie wygląda ale ja ostatnio zrobiłem to w ten sposób:
Serwer wysyła informację na jakimś porcie UDP. Aplikacje klienckie nasłuchują w oddzielnym wątku na tym porcie UDP. U mnie to rozwiązanie jest o tyle wygodne, że w sieci jest specjalny switch multicastowy, który sprzętowo rozwiązuje kilka problemów. Same operacje natomiast w aplikacji odpalane są za pomocą synchronize i póki co żadnych problemów nie ma.

2
  1. "socketów" się nie wysyła - socket to po polsku gniazdo i służy do wysyłania danych

  2. error na pewno przekazuje więcej informacji niż "związany z synchronizacją pakietów"

  3. z tego kodu nie wynika absolutnie nic

  4. coś mi się wydaje, że programujesz metodą "udo" - albo się udo albo się nie udo

  5. opisz KONKRETNIE i SZCZEGÓŁOWO co chcesz zrobić

  6. podaj kod, którym próbujesz to robić

  7. DOKŁADNIE podaj treść błędu i twój opis co nie działa tak jakbyś chciał

0

Nie mam za dużego doświadczenia w pisaniu serverów i socketach. Ale może będzie dla Ciebie pomocne skorzystanie z Simple TCP. Zobacz na: http://piechnat.pl/article/simpletcp.html są tam sam moduł i przykłady użycia w tym server.

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