changeset 11:827460e58a24

implement client server and config docker compose
author Dennis <dennisconcepcionmartin@gmail.com>
date Thu, 20 Jul 2023 09:23:43 +0100
parents fd707ca47dd0
children dc97a1196f45
files Dockerfile docker-compose.yml run.sh src/client/Dockerfile src/client/main.c src/server/Dockerfile src/server/main.c
diffstat 7 files changed, 91 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/Dockerfile	Wed Jul 19 18:40:47 2023 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-FROM debian:latest
-
-WORKDIR /app
-
-COPY CMakeLists.txt .
-COPY src src/
-
-RUN apt-get update
-RUN apt-get install cmake -y
-
-RUN mkdir -p build
-RUN cd build && cmake .. && make && chmod +x hey
-
-CMD ["./build/hey"]
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docker-compose.yml	Thu Jul 20 09:23:43 2023 +0100
@@ -0,0 +1,26 @@
+services:
+  server:
+    build: src/server/.
+    environment:
+      - PORT=80
+    networks:
+      hey:
+        ipv4_address: 192.168.1.2
+
+  client:
+    build: src/client/.
+    environment:
+      - HOSTNAME=192.168.1.2
+      - PORT=80
+    networks:
+      hey:
+        ipv4_address: 192.168.1.3
+    depends_on:
+      - server
+
+networks:
+  hey:
+    ipam:
+      driver: default
+      config:
+        - subnet: "192.168.1.0/24"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/run.sh	Thu Jul 20 09:23:43 2023 +0100
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+docker compose build
+docker compose up -d 
+
+#!/bin/bash
+
+rectangle="
++----------------------+
+|                      |
+|   CLIENT CONSOLE     |
+|                      |
++----------------------+"
+
+echo "$rectangle"
+echo "To view server logs run 'docker logs --follow hey-server-1' in other terminal"
+echo ""
+
+docker exec -it hey-client-1 ./build/hey_client
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/client/Dockerfile	Thu Jul 20 09:23:43 2023 +0100
@@ -0,0 +1,14 @@
+FROM debian:latest
+
+WORKDIR /app
+
+COPY CMakeLists.txt .
+COPY main.c .
+
+RUN apt-get update
+RUN apt-get install cmake -y
+
+RUN mkdir -p build
+RUN cd build && cmake .. && make && chmod +x hey_client
+
+CMD ["sleep", "infinity"]
--- a/src/client/main.c	Wed Jul 19 18:40:47 2023 +0100
+++ b/src/client/main.c	Thu Jul 20 09:23:43 2023 +0100
@@ -9,14 +9,15 @@
 #define MAX_MSG_SIZE 1000
 
 
-int main(int argc, char *argv[]) {
-	if (argc != 3) {
-		printf("Invalid arguments: hostname port\n");
-		exit(1);
-	}
+int main() {
+	char *hostname = getenv("HOSTNAME");
+	char *port = getenv("PORT");
+	printf("SERVER HOSTNAME: %s\n", hostname);
+	printf("SERVER PORT: %s\n\n", port);
 
-	char *hostname = argv[1];
-	char *port = argv[2];
+	printf("Press ENTER to connect to the server.");
+	while (getchar() != '\n');
+
 	struct addrinfo hints;
 	struct addrinfo *service_info;
 
@@ -41,7 +42,7 @@
 	}
 
 	freeaddrinfo(service_info);
-	printf("Connection established\n");
+	printf("\nConnection established\n\n");
 
 	char msg[MAX_MSG_SIZE];
 	bool connected = true;
@@ -63,6 +64,7 @@
 
 		printf("%zd bytes sent\n", bytes_sent);
 		memset(&msg, 0, sizeof(msg));
+		printf("\n");
 	}
 
 	close(clientfd);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/server/Dockerfile	Thu Jul 20 09:23:43 2023 +0100
@@ -0,0 +1,15 @@
+FROM debian:latest
+
+WORKDIR /app
+
+COPY CMakeLists.txt .
+COPY main.c .
+
+RUN apt-get update
+RUN apt-get install cmake -y
+
+RUN mkdir -p build
+RUN cd build && cmake .. && make && chmod +x hey_server
+
+CMD ["./build/hey_server"]
+
--- a/src/server/main.c	Wed Jul 19 18:40:47 2023 +0100
+++ b/src/server/main.c	Thu Jul 20 09:23:43 2023 +0100
@@ -37,13 +37,9 @@
 	return ipport;
 }
 
-int main(int argc, char *argv[]) {
-	if (argc != 2) {
-		printf("Invalid arguments: port\n");
-		exit(1);
-	}
+int main() {
+	char *port = getenv("PORT");
 
-	char *port = argv[1];
 	struct addrinfo hints;
 	struct addrinfo *service_info; 
 
@@ -81,7 +77,8 @@
 
 	struct sockaddr_storage clientinfo;
 	socklen_t clientinfo_size;
-	printf("Waiting for connections...\n");
+	printf("Waiting for connections...\n\n");
+	fflush(stdout);
 
 	int connfd = accept(listenfd, (struct sockaddr *)&clientinfo, &clientinfo_size);
 	if (connfd == -1) {
@@ -90,7 +87,8 @@
 	}
 
 	struct IpPort client_ipport = get_ipport((struct sockaddr *)&clientinfo);
-	printf("Connection from %s:%u\n", client_ipport.ipstr, client_ipport.port);
+	printf("Connection from %s:%u\n\n", client_ipport.ipstr, client_ipport.port);
+	fflush(stdout);
 
 	char msg[MAX_MSG_SIZE];
 
@@ -104,6 +102,7 @@
 			break;
 		} else {
 			printf("Client: %s\n", msg);
+			fflush(stdout);
 		}
 
 		memset(&msg, 0, sizeof(msg));