From 5c732010bfcbe224bd82c2cd9d00f5c318180d9c Mon Sep 17 00:00:00 2001
From: 20050114 <20050114@studenti.uniupo.it>
Date: Fri, 24 May 2024 11:27:14 +0200
Subject: [PATCH] il primo messaggio non va, dopo il primo funziona

---
 .../Assigment6/EchoServerUDP/client           | Bin 0 -> 17352 bytes
 .../Assigment6/EchoServerUDP/client.c         |  61 +++++++++++++
 .../Assigment6/EchoServerUDP/makefile         |  10 +++
 .../Assigment6/EchoServerUDP/server           | Bin 0 -> 17448 bytes
 .../Assigment6/EchoServerUDP/server.c         |  84 ++++++++++++++++++
 5 files changed, 155 insertions(+)
 create mode 100755 Reti/Laboratorio/Assigment6/EchoServerUDP/client
 create mode 100644 Reti/Laboratorio/Assigment6/EchoServerUDP/client.c
 create mode 100644 Reti/Laboratorio/Assigment6/EchoServerUDP/makefile
 create mode 100755 Reti/Laboratorio/Assigment6/EchoServerUDP/server
 create mode 100644 Reti/Laboratorio/Assigment6/EchoServerUDP/server.c

diff --git a/Reti/Laboratorio/Assigment6/EchoServerUDP/client b/Reti/Laboratorio/Assigment6/EchoServerUDP/client
new file mode 100755
index 0000000000000000000000000000000000000000..0492ed069be87dd7d80a50fcad255411fc94e3c5
GIT binary patch
literal 17352
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
Vbtyjc7q|cG3SDE4&A`U8e*m<xWQG6$

literal 0
HcmV?d00001

diff --git a/Reti/Laboratorio/Assigment6/EchoServerUDP/client.c b/Reti/Laboratorio/Assigment6/EchoServerUDP/client.c
new file mode 100644
index 0000000..2a0d7e2
--- /dev/null
+++ b/Reti/Laboratorio/Assigment6/EchoServerUDP/client.c
@@ -0,0 +1,61 @@
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#define MAXSIZEBUFFER 256
+
+int main(int argc, char *argv[]) {
+  int simpleSocket = 0;
+  int simplePort = 0;
+  int returnStatus = 0;
+  struct sockaddr_in serverAddr, clientAddr;
+  socklen_t serverSize, clientSize;
+
+  char buffer[MAXSIZEBUFFER] = {'\0'};
+
+  if (argc != 3) {
+    fprintf(stderr, "Usage: %s <server> <port>\n", argv[0]);
+    exit(1);
+  }
+
+  simplePort = atoi(argv[2]);
+
+  simpleSocket = socket(AF_INET, SOCK_DGRAM, 0);
+
+  if (simpleSocket == -1) {
+    fprintf(stderr, "Could not create a socket!\n");
+    exit(1);
+  } else {
+    printf("Socket created!\n");
+  }
+
+  memset(&clientAddr, '\0', sizeof(clientAddr));
+  clientAddr.sin_family = AF_INET;
+  clientAddr.sin_addr.s_addr = inet_addr(argv[1]);
+  clientAddr.sin_port = htons(simplePort);
+
+  clientSize = sizeof(clientAddr);
+
+  printf("Inserisci un valore: ");
+  scanf("%s", buffer);
+
+  sendto(simpleSocket, buffer, strlen(buffer), 0,
+         (struct sockaddr *)&clientAddr, clientSize);
+
+  // Waiting for Echo
+
+  memset(buffer, '\0', sizeof(buffer));
+
+  recvfrom(simpleSocket, buffer, MAXSIZEBUFFER, 0,
+           (struct sockaddr *)&serverAddr, &serverSize);
+
+  printf("Echo from server: %s\n", buffer);
+
+  return 0;
+}
diff --git a/Reti/Laboratorio/Assigment6/EchoServerUDP/makefile b/Reti/Laboratorio/Assigment6/EchoServerUDP/makefile
new file mode 100644
index 0000000..f0ddf27
--- /dev/null
+++ b/Reti/Laboratorio/Assigment6/EchoServerUDP/makefile
@@ -0,0 +1,10 @@
+all: client server
+
+client: client.c
+	gcc client.c -o client
+
+server: server.c
+	gcc server.c -o server
+
+clean:
+	rm -f client server
diff --git a/Reti/Laboratorio/Assigment6/EchoServerUDP/server b/Reti/Laboratorio/Assigment6/EchoServerUDP/server
new file mode 100755
index 0000000000000000000000000000000000000000..f7bb6edcc899947c9fa380ff6607099b128035bf
GIT binary patch
literal 17448
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
NyiRCb;xX{B?60Xu7E1sC

literal 0
HcmV?d00001

diff --git a/Reti/Laboratorio/Assigment6/EchoServerUDP/server.c b/Reti/Laboratorio/Assigment6/EchoServerUDP/server.c
new file mode 100644
index 0000000..f2f26a4
--- /dev/null
+++ b/Reti/Laboratorio/Assigment6/EchoServerUDP/server.c
@@ -0,0 +1,84 @@
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <netinet/in.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <time.h>
+#include <unistd.h>
+
+#define MAXSIZEBUFFER 256
+
+int main(int argc, char *argv[]) {
+  int simpleSocket = 0;
+  int simplePort = 0;
+  int returnStatus = 0;
+  struct sockaddr_in clientAddr, serverAddr;
+  socklen_t clientSize, serverSize;
+
+  char buffer[MAXSIZEBUFFER] = {'\0'};
+
+  if (argc < 1 || argc > 2) {
+    fprintf(stderr, "Usage: %s <port>\n", argv[0]);
+    exit(1);
+  }
+
+  // Creating UDP Socket
+  simpleSocket = socket(AF_INET, SOCK_DGRAM, 0);
+
+  if (simpleSocket == -1) {
+    fprintf(stderr, "Could not create a socket!\n");
+    exit(1);
+  } else {
+    printf("Socket created!\n");
+  }
+
+  // if available use argv[1] for port number, else generate a randome one
+  if (argc == 2) {
+    simplePort = atoi(argv[1]);
+    if (simplePort < 10000 || simplePort > 12000) {
+      fprintf(stderr, "Port must be in range [10000, 12000]\n");
+      exit(1);
+    }
+  } else {
+    srand(time(NULL));
+    simplePort = (rand() % 1999) + 10000;
+    // simplePort = 11100;
+  }
+
+  // Setup the address structure of the destination
+  // use INADDR_ANY to bind to all local addresses
+  serverSize = sizeof(serverAddr);
+  memset(&serverAddr, '\0', serverSize);
+  serverAddr.sin_family = AF_INET;
+  serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
+  serverAddr.sin_port = htons(simplePort);
+
+  returnStatus = bind(simpleSocket, (struct sockaddr *)&serverAddr, serverSize);
+
+  if (returnStatus != 0) {
+    fprintf(stderr, "Error, Impossible to Bind Socket\n");
+    exit(1);
+  } else {
+    printf("Bind Complete on %d!\n", simplePort);
+  }
+
+  while (1) {
+    // Recive from client
+    memset(buffer, '\0', sizeof(buffer));
+
+    recvfrom(simpleSocket, buffer, MAXSIZEBUFFER, 0,
+             (struct sockaddr *)&clientAddr, &clientSize);
+
+    printf("Received: '%s' | Sender IP: '%s'\n", buffer,
+           inet_ntoa(clientAddr.sin_addr));
+
+    // Send to client
+    sendto(simpleSocket, buffer, strlen(buffer), 0,
+           (struct sockaddr *)&clientAddr, clientSize);
+  }
+
+  return 0;
+}
-- 
GitLab