Zdalne odpalanie procedur

0

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ć

0

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.

0

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

0

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.

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