# HG changeset patch # User Dennis # Date 1689841423 -3600 # Node ID 827460e58a24a891fc716c9edcf2c3f043d57230 # Parent fd707ca47dd075ccbff975f75987768d87400275 implement client server and config docker compose diff -r fd707ca47dd0 -r 827460e58a24 Dockerfile --- 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"] - diff -r fd707ca47dd0 -r 827460e58a24 docker-compose.yml --- /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" diff -r fd707ca47dd0 -r 827460e58a24 run.sh --- /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 diff -r fd707ca47dd0 -r 827460e58a24 src/client/Dockerfile --- /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"] diff -r fd707ca47dd0 -r 827460e58a24 src/client/main.c --- 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); diff -r fd707ca47dd0 -r 827460e58a24 src/server/Dockerfile --- /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"] + diff -r fd707ca47dd0 -r 827460e58a24 src/server/main.c --- 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));