summaryrefslogtreecommitdiffstats
path: root/Bachelor/Verteilte Systeme/Praktikum2/Vorgabe
diff options
context:
space:
mode:
Diffstat (limited to 'Bachelor/Verteilte Systeme/Praktikum2/Vorgabe')
-rw-r--r--Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/Makefile.addiere45
-rw-r--r--Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/README75
-rw-r--r--Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere.x10
-rw-r--r--Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere_client.c_NACH_Ergaenzung58
-rw-r--r--Bachelor/Verteilte Systeme/Praktikum2/Vorgabe/addiere_server.c_NACH_Ergaenzung23
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;
+}