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