Witam,
mam do zrobienia taki projekt, klient w Windowsie, serwer w Linuksie, pisane w C++, pomijam tutaj kwestie komunikacji, bo nie o tym chcę pisać.
Program ma funkcjonować mniej więcej tak :
klient podłącza sie do serwera, pobiera od niego listę funkcji jakie zawiera serwer, następnie może wywołać jakąs procedurę, przekazuje serwerowi nazwę funkcji i parametry, po czym serwer zwraca jej wynik
chodzi o to, że nie wiem jak po stronie serwera odpalać zdalnie funkcję, serwer ma zawierać bibliotekę z tym funkcjami czy coś, ogólnie nie wiem jak ten serwer ma wyglądać
klient wysyła np taki ciąg znaków:
dodaj:2,1
serwer to odbiera, parsuje i ma :
fnName="dodaj",
params[0]="2",
params[1]="1",
i leci sobie dajmy na to taki kod:
int dodaj(int a, int b) { return a+b; };
...
else if ( strcmp(fnName, "dodaj") == 0 )
{
int wynik = dodaj(toInteger(params[0]), toInteger(params[1]) );
OdeslijDoKlienta(wynik); // opcjonalne..
}
else if ( strcmp(fnName, "odejmij") == 0 )
...
else
OdeslijDoKlienta("Blad, nie ma takiej funkcji", fnName);
to tak chyba najprosciej..
Ogolnie o to chodzi ze przesylasz do klienta dajmy na to nazwy funkcji i identufikatory jakies (moga to byc ciagi znakow jak podalem w przykladzie, albo jakiekolwiek inne id jednoznaczenie okreslajace funckje) ktore to klient "odsyla" kiedy chce wykonac jakas funckje.
no wiem mniej więcej jak to ma funkcjonować, nie miałem tylko pomysłu jak to wywoływać, muszę przyznać, że oryginalny pomysł z użyciem strcmp, ale chyba mi nie pomoże, serwer ma mieć możliwość dodawania nowych funkcji, szczerze mówiąc nie wiem w jaki sposób ma to niby wyglądać, koleś wspominał coś o bibliotece z funkcjami, właśnie nie wiem czy plik .lib czy .dll, zawsze tworzyłem tylko standardowe aplikacje c++ z użyciem .cpp i .h, więc nie wiem nawet do czego przydają się takie biblioteki
no to jak masz miec mozliwosc dodawania funkcji to dll, a w zasadzie jesli to ma byc linux to so ;]. Reszta mniej wiecej zostaje, tzn. robisz o mniej wiecej tak: przeszukujesz jakis katalog ( powiedzmy: ./functions ) i bierzesz z niego wszystkie pliki *.so. Kazda taka biblioteka powinna miec funkcje dajmy na to: GetFunctions(), zwracajaca powiedzmy tablice z identyfikatorami funckji. Po zaladowaniu biblioteki wzwolujesz ta funkcje i zapamietujesz sobie gdzie danych funkcji szukac (mozesz tez pamietac jakie parametrz pobieraja itp ). No i pozniej tylko wzwolujesz te funkcje z bibliotek jesli istnieja. Co do tego jak to znajedziesz na necie duzo o bibliotekach so.