Mercurial > public > hey
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));