diff options
Diffstat (limited to 'Bachelor/Verteilte Systeme/Praktikum2/Vorgabe')
5 files changed, 211 insertions, 0 deletions
diff --git a/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/Makefile.addiere b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/Makefile.addiere new file mode 100644 index 0000000..6d59a66 --- /dev/null +++ b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/Makefile.addiere @@ -0,0 +1,45 @@ + +# This is a template Makefile generated by rpcgen + +# Parameters + +CLIENT = addiere_client +SERVER = addiere_server + +SOURCES_CLNT.c = +SOURCES_CLNT.h = +SOURCES_SVC.c = +SOURCES_SVC.h = +SOURCES.x = addiere.x + +TARGETS_SVC.c = addiere_svc.c addiere_server.c addiere_xdr.c +TARGETS_CLNT.c = addiere_clnt.c addiere_client.c addiere_xdr.c +TARGETS = addiere.h addiere_xdr.c addiere_clnt.c addiere_svc.c addiere_client.c addiere_server.c + +OBJECTS_CLNT = $(SOURCES_CLNT.c:%.c=%.o) $(TARGETS_CLNT.c:%.c=%.o) +OBJECTS_SVC = $(SOURCES_SVC.c:%.c=%.o) $(TARGETS_SVC.c:%.c=%.o) +# Compiler flags + +CFLAGS += -g +RPCGENFLAGS = + +# Targets + +all : $(CLIENT) $(SERVER) + +$(TARGETS) : $(SOURCES.x) + rpcgen $(RPCGENFLAGS) $(SOURCES.x) + +$(OBJECTS_CLNT) : $(SOURCES_CLNT.c) $(SOURCES_CLNT.h) $(TARGETS_CLNT.c) + +$(OBJECTS_SVC) : $(SOURCES_SVC.c) $(SOURCES_SVC.h) $(TARGETS_SVC.c) + +$(CLIENT) : $(OBJECTS_CLNT) + $(LINK.c) -o $(CLIENT) $(OBJECTS_CLNT) $(LDLIBS) + +$(SERVER) : $(OBJECTS_SVC) + $(LINK.c) -o $(SERVER) $(OBJECTS_SVC) $(LDLIBS) + + clean: + $(RM) core $(TARGETS) $(OBJECTS_CLNT) $(OBJECTS_SVC) $(CLIENT) $(SERVER) + diff --git a/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/README b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/README new file mode 100644 index 0000000..8331f10 --- /dev/null +++ b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/README @@ -0,0 +1,75 @@ +1. Zunaechst werde aus dem IDL Interface addiere.x mit dem PRC Compiler die Rumpsdateien erzeugt. + $ ls -al + $ ls -al + drwxrwxr-x 2 as users 4096 Jan 29 11:47 . + drwxrwxr-x 4 as users 4096 Jan 29 11:45 .. + -rw-rw-r-- 1 as users 164 Jan 29 11:45 addiere.x + $ + $ ppcgen -a addiere.x + $ rpcgen -a addiere.x + $ ll + insgesamt 48 + -rw-rw-r-- 1 as users 784 Jan 29 11:50 addiere_client.c + -rw-rw-r-- 1 as users 551 Jan 29 11:50 addiere_clnt.c + -rw-rw-r-- 1 as users 973 Jan 29 11:50 addiere.h + -rw-rw-r-- 1 as users 318 Jan 29 11:50 addiere_server.c + -rw-rw-r-- 1 as users 2111 Jan 29 11:50 addiere_svc.c + -rw-rw-r-- 1 as users 164 Jan 29 11:45 addiere.x + -rw-rw-r-- 1 as users 294 Jan 29 11:50 addiere_xdr.c + -rw-rw-r-- 1 as users 1118 Jan 29 11:50 Makefile.addiere + $ + +2. Nun ist die Aenderung am Client- und am Server-Programm durchzufuehren: + $ vi addiere_client.c + ... + $ + $ vi addiere_client.c + ... + $ + Beispiele sind "addiere_client.c_NACH_Ergaenzung" und "addiere_client.c_VOR_Ergaenzung" + +3. Nun ist alles mit dem erzeugten Makefile zu generieren. Jeweils auf Server und Client-Rechner. + $ make -f Makefile.addiere + $ make -f Makefile.addiere + cc -g -c -o addiere_clnt.o addiere_clnt.c + cc -g -c -o addiere_client.o addiere_client.c + cc -g -c -o addiere_xdr.o addiere_xdr.c + cc -g -o addiere_client addiere_clnt.o addiere_client.o addiere_xdr.o -lnsl + cc -g -c -o addiere_svc.o addiere_svc.c + cc -g -c -o addiere_server.o addiere_server.c + cc -g -o addiere_server addiere_svc.o addiere_server.o addiere_xdr.o -lnsl + $ + $ ls -l + insgesamt 280 + -rwxrwxr-x 1 as users 42669 Jan 29 11:55 addiere_client + -rw-rw-r-- 1 as users 784 Jan 29 11:50 addiere_client.c + -rw-rw-r-- 1 as users 28228 Jan 29 11:55 addiere_client.o + -rw-rw-r-- 1 as users 551 Jan 29 11:50 addiere_clnt.c + -rw-rw-r-- 1 as users 27728 Jan 29 11:55 addiere_clnt.o + -rw-rw-r-- 1 as users 973 Jan 29 11:50 addiere.h + -rwxrwxr-x 1 as users 44808 Jan 29 11:55 addiere_server + -rw-rw-r-- 1 as users 318 Jan 29 11:50 addiere_server.c + -rw-rw-r-- 1 as users 27288 Jan 29 11:55 addiere_server.o + -rw-rw-r-- 1 as users 2111 Jan 29 11:50 addiere_svc.c + -rw-rw-r-- 1 as users 30480 Jan 29 11:55 addiere_svc.o + -rw-rw-r-- 1 as users 164 Jan 29 11:45 addiere.x + -rw-rw-r-- 1 as users 294 Jan 29 11:50 addiere_xdr.c + -rw-rw-r-- 1 as users 27380 Jan 29 11:55 addiere_xdr.o + -rw-rw-r-- 1 as users 1118 Jan 29 11:50 Makefile.addiere + $ + +4. Fertig - nun kann der Server gestartet werden und Clients können Anfragen stellen: + Server (linux): + $ addiere_server & + [2] 2672 + $ ps + PID TTY TIME CMD + 27586 pts/5 00:00:00 bash + 2672 pts/1 00:00:00 addiere_server + 2673 pts/1 00:00:00 ps + $ + + Client: + $ addiere_client linux + addiere(5,6) liefert 11 + $ diff --git a/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere.x b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere.x new file mode 100644 index 0000000..5ffdad9 --- /dev/null +++ b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere.x @@ -0,0 +1,10 @@ +struct add_struct { + int p1; + int p2; +}; + +program ADDIERE_TEST { + version ONE { + int addiere(add_struct p) = 1; + } = 1; +} = 1234567; diff --git a/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere_client.c_NACH_Ergaenzung b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere_client.c_NACH_Ergaenzung new file mode 100644 index 0000000..e6b9887 --- /dev/null +++ b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere_client.c_NACH_Ergaenzung @@ -0,0 +1,58 @@ +/* + * This is sample code generated by rpcgen. + * These are only templates and you can use them + * as a guideline for developing your own functions. + */ + +#include "addiere.h" + + +void +addiere_test_1(char *host) +{ + CLIENT *clnt; + int *result_1; + add_struct addiere_1_arg; + +#ifndef DEBUG + clnt = clnt_create (host, ADDIERE_TEST, ONE, "udp"); + if (clnt == NULL) { + clnt_pcreateerror (host); + exit (1); + } +#endif /* DEBUG */ + + /* my code START */ + addiere_1_arg.p1 = 5; + addiere_1_arg.p2 = 6; + /* my code END */ + + result_1 = addiere_1(&addiere_1_arg, clnt); + if (result_1 == (int *) NULL) { + clnt_perror (clnt, "call failed"); + } + /* my code START */ + else { + printf("addiere(5,6) liefert %d\n", *result_1); + } + /* my code END */ + +#ifndef DEBUG + clnt_destroy (clnt); +#endif /* DEBUG */ +} + + +int +main (int argc, char *argv[]) +{ + char *host; + + if (argc < 2) { + printf ("usage: %s server_host\n", argv[0]); + exit (1); + } + host = argv[1]; + addiere_test_1 (host); +exit (0); +} diff --git a/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere_server.c_NACH_Ergaenzung b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere_server.c_NACH_Ergaenzung new file mode 100644 index 0000000..3f8bb84 --- /dev/null +++ b/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere_server.c_NACH_Ergaenzung @@ -0,0 +1,23 @@ +/* + * This is sample code generated by rpcgen. + * These are only templates and you can use them + * as a guideline for developing your own functions. + */ + +#include "addiere.h" + +int * +addiere_1_svc(add_struct *argp, struct svc_req *rqstp) +{ + static int result; + + /* + * insert server code here + */ + + /* my Code START */ + result = argp->p1 + argp->p2; + /* my Code END */ + + return &result; +} |
