Witam.
Napisałem protokół (tzn jestem w trakcie pisania), który na podstawie otrzymanego tekstu tworzy zapytanie do MySQL i zwraca do klienta całą treść wyniku z MySQL przez port, na którym działa dana aplikacja.
No i moje pytanie brzmi... Jak (korzystając z funkcji send(), recv()) klient ma odebrać i zapisać dane o zmiennym rozmiarze bez potrzeby marnowania miejsca na zapas lub ryzyka ze tego miejsca braknie?
Tzn. chodzi dokładnie o to ze send() i recv() odbierają jako jeden argument bufor (który musi mieć już określony rozmiar) oraz zmienną zawierającą rozmiar tego bufora. No i jak to zrobić (najoptymalniej) aby odebrać nawet bardzo duże dane bez potrzeby deklarowania bufora "na zapas"...
Ja wymyśliłem coś takiego ze najpierw serwer (w odpowiedzi na żądanie klienta) wysyła informacje o rozmiarze wyniku... klient dynamicznie tworzy sobie taką tablicę (bufor operatorem new), po czym odpowiada serwerowi ze już ma bufor (np. wysyła jedynkę). Serwer dopiero wtedy przystępuje do wysłania danych właściwych. Potem klient operuje na danych i po tym wszystkim dealokuje bufor (delete). Problemem dla mnie jest tylko to że czasami będzie potrzeba wykonania serii zapytań (np. około 100 pod rząd). Przy tym rozwiązaniu liczba operacji wysyłania jest równa 200. A gdyby doliczyć, że z serwera korzysta więcej niż jedna osoba to jego obciążenie może być znaczne.
Ma ktoś jakieś lepsze pomysły?? A może moje obawy o obciążeniu serwera nie są potrzebne??