---------------------------------------------------------------------------------------------------
client-Slib.c to wersja blibioteczna clientaS. Funckjonalnie odpowiada dzialniu clientS.
z tym, ze jest to funkcja biblioteczna do uzycia w programie bez koniecznosci odwolania do
powloki Linuxa
---------------------------------------------------------------------------------------------------

...
char message[2048];
char server_reply[80];
int ret=clientS(const char*message, char*server_reply, char*addrIP, int port);
...

message ma postac np. "W00MD1=<filename>" (wywoluje wyliczenie #md4sum [filename])

addrIP - adres IP servera (mserverS) np. "10.0.0.10"
port= 8890 (default port na ktorym nasluchuje mserverS)

ustawienia default addrIP="10.0.0.10" oraz port=8890 przyjmuje jesli wpisac:
int ret = clientS(message, server_reply, "NULL", 0);

w zmiennej ret funkcja zwraca 1 jesli nie bylo bledu transmisji
lub 0 jesli byl blad oraz kod bledu w zmiennej char*server_reply;
Kody bledow transmisji:
ServerError100 - oznacza "Could not create socket"
ServerError200 - oznacza "Error: connect failed"
ServerError300 - oznacza "Send messaged failed"
ServerError400 - oznacza "Server reply failed"
ServerError500 - oznacza "Cannot connect to server"

---------------------------------------------------------------------------------------------------

kompilacja gcc -c client-Slib.c

clientSlib.h (header)
---------------------------------------------------------------------------------------------------

UWAGA, mozna uzyc biblioteki client-Slib.c ale bardziej rozbudowana jest biblioteka 
       clientSS-lib.c i ta nalezy zastosowac poniewaz zawiera wszystkie fukcje 
	client-Slib.c oraz funckje dodatkowe clientSS i trim_time

---------------------------------------------------------------------------------------------------
clientSS-lib.c

adres mozna przetawic w #define "10.0.0." (default) przed kompilacja
port mozna zmienic w #define 8890 (defult) przed kompilacja
test_mode=1 zapisuje wszsytkie parametry skanowania do tablicy ip_tab
test_mode=0 zapisuje do ip_table 0 - jesli serwer jest niekatywny, 1 - aktywny

zawiera funkcje:

------
int name_to_addrIP(const char*server_name, char*server_addr)

- pozwala na zamiane nazwy serwera na adres IP serwera zwraca NULL w server_addr jesli 
  taki serwer jest niekatywny lub nie istnieje

0 - jesli zwraca NULL
1 - jesli serwer zostal wykryty w sieci 

------
int scan_activity(const char*message)

- skanuje serwery w sieci i zwraca liczbe aktywnych serwerow
  standardowa message (jesli nie zostanie zmieniona) to "H00"
  skanowanie jest w prnym zakrsie od 0-255
  ustawiona jest (default) w test_mode=1
  zwraca liczbe aktywnych serwerow w sieci

------
int mapping(const char*message)

- zapisuje do pliku .mnt/tmp/addr mape aktywnych serwerow
  standardowa message (default) jest "H00"
  zwraca liczbe aktywnych serwerow

------
int clientS(char*addr_ip, const char*message, char*server_reply)

- wyslyla kod sterujeacy do serwera-S w message
  odpowiedz od serwera-s w server_reply
  w stringu addr_ip nalezy podac adres serwera-S np. "10.0.0.10"
  zwraca 1 - jesli serwer jest aktywny na zapytanie np. "H00" oraz nazwe servera w msg.
	 0 - jesli polacznie jest ok., ale odp. ma zerowa dlugosc
  oraz wartosc <1 jesli wystapily bledy:
  -1 - "Could not create socket" (nie mozna otworzyc socket)
  -2 - time out nie jest zakceptowany przez funkcje recv (odbieranie danych)
  -3 - time out nie jest zakceptowany prze funkcje  send (nadawnie danych)
  -4 - "Error connect failed" (polaczenie nie zostalo zrealizwoane)
  -5 - socket zostal zamkniety przy dzialaniu funkcji send (wysylanie danych)
  -6 - socket zostal zamkniety przy funkcji recv (odbieranie danych)
przy wpisaniu "TRIMTIME" w message, jesli wystapi blad to zwraca
    -10 - i w server_reply="Error01" - blad poblrania czasu 
  
------
int clientSS(char*server_name, const char*msg_ID, const char*message, char*server_reply)
nakladka funckje clientS dla wywolywania serwera-S poprzez nazwe a nie adres IP

- realizuje przesylanie danych przez adresowanie nazwa serwer-S
  np. server_name= "SERVER-S" przeysla dane do BUFORA
      server_name="N005" przesyla dane do wezla nr 5
  w stringu msg_ID nalezy wpisac kod zapytania o nazwe serwera - standardowo "H00"
  message - dane przeslane do serwera-S np. pytanie o pid mserverS: "W00GP1=mserverS"
  server reply - po przeslaniu danych odp. moze byc DONE lub RUN (dla procesu uruchomonego w tle)
  natomiast po przeslaniu message="R00" dostajemy odpowiedz przeslanej uprzednio message
  jesli byla "W00GP1=mserverS" wowczas odp bedzie np. "W00GP=3467" po znaku "=" przeslana
  bedzie wartosc pid mserverS. To zapytanie musi byc zrealizwoane poniewaz mserverS musi byc
  aktywny jesli poloczenie dziala. 

-----
Synchronizacja czasu:
int clientSS(char*server_name, const char*msg_ID, "TRIMTIME", char*server_reply)
np. dla BUFORA:clientSS("SERVER-S","H00","TRIMTIME",server_reply);
- jako zmienna message  nalezy wpisac string="TRIMTIME"
- zwraca kody bledow takie jak clientS
 lub jesli zegar systemowy klienta nie dziala proawidlowo to blad -10

jesli znany jest adres IP mserverS synchornizacje mozna wykonac stosujac funkcje:
int clientS(char*addr_ip, "TRIMTIME" , char*server_reply)
lub
int trim_time(char*addr_ip, char*server_reply)


 
































