From a9da4251e25a7684c98f62bed5f4c846f7abb97c Mon Sep 17 00:00:00 2001 From: Arthur-Coppey Date: Thu, 8 Jul 2021 13:42:02 +0200 Subject: [PATCH] added test client --- CMakeLists.txt | 3 ++- client/main.c | 49 +++++++++++++++++++++++++++++++++++++ main.c | 10 -------- server.c | 23 ----------------- server/main.c | 11 +++++++++ quote.c => server/quote.c | 0 quote.h => server/quote.h | 0 server/server.c | 44 +++++++++++++++++++++++++++++++++ server.h => server/server.h | 8 ++++-- 9 files changed, 112 insertions(+), 36 deletions(-) create mode 100644 client/main.c delete mode 100644 main.c delete mode 100644 server.c create mode 100644 server/main.c rename quote.c => server/quote.c (100%) rename quote.h => server/quote.h (100%) create mode 100644 server/server.c rename server.h => server/server.h (58%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 32c9999..adb5a39 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,4 +3,5 @@ project(qotd C) set(CMAKE_C_STANDARD 99) -add_executable(qotd main.c quote.c quote.h server.c server.h) \ No newline at end of file +add_executable(server server/main.c server/quote.c server/quote.h server/server.c server/server.h) +add_executable(client client/main.c) \ No newline at end of file diff --git a/client/main.c b/client/main.c new file mode 100644 index 0000000..290a100 --- /dev/null +++ b/client/main.c @@ -0,0 +1,49 @@ +// +// Created by k0rb4k on 22/04/2021. +// + +#include +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) { + struct sockaddr_in server; + int sock; + + server.sin_family = AF_INET; + server.sin_addr.s_addr = inet_addr("127.0.0.1"); + server.sin_port = htons(17); + + sock = socket(server.sin_family, SOCK_STREAM, IPPROTO_IP); + if (sock == -1) { + puts("socket not created"); + return 1; + } + + if (connect(sock, (const struct sockaddr *) &server, sizeof(server)) < 0) { + puts("connection failed"); + return 2; + } + + char *payload = "I dream of sushi"; + if (send(sock, payload, strlen(payload), 0) < 0) { + puts("error while sending payload"); + return 3; + } + + char response[2048]; + if (recv(sock, response, 2048, 0)) { + puts("receive failed"); + return 4; + } + puts("server response :"); + puts(response); + + close(sock); + + return 0; +} \ No newline at end of file diff --git a/main.c b/main.c deleted file mode 100644 index 1c7d414..0000000 --- a/main.c +++ /dev/null @@ -1,10 +0,0 @@ -#include "quote.h" -#include "server.h" - -int main(int argc, char *argv[]) { - char quote[1024]; - getRandomQuote(quote); - printf("%s\n", quote); - - return 0; -} diff --git a/server.c b/server.c deleted file mode 100644 index 003aeea..0000000 --- a/server.c +++ /dev/null @@ -1,23 +0,0 @@ -// -// Created by k0rb4k on 30/03/2021. -// - -#include "server.h" - -void tcpListen() { - int serverFd; - struct sockaddr_in address; - - address.sin_family = AF_INET; - address.sin_addr.s_addr = INADDR_ANY; - address.sin_port = htons(17); - - serverFd = socket(AF_INET, SOCK_STREAM, 0); - - bind(serverFd, (const struct sockaddr *) &address, sizeof address); - // TODO: listen and respond -} - -void udpListen() { - -} diff --git a/server/main.c b/server/main.c new file mode 100644 index 0000000..2493988 --- /dev/null +++ b/server/main.c @@ -0,0 +1,11 @@ +#include "quote.h" +#include "server.h" + +int main(int argc, char *argv[]) { +// char quote[1024]; +// getRandomQuote(quote); +// printf("%s\n", quote); + tcpServer(); + + return 0; +} diff --git a/quote.c b/server/quote.c similarity index 100% rename from quote.c rename to server/quote.c diff --git a/quote.h b/server/quote.h similarity index 100% rename from quote.h rename to server/quote.h diff --git a/server/server.c b/server/server.c new file mode 100644 index 0000000..4da219d --- /dev/null +++ b/server/server.c @@ -0,0 +1,44 @@ +// +// Created by k0rb4k on 30/03/2021. +// + +#include "server.h" + +void tcpServer() { + int serverSocket, clientSocket; + unsigned long addressLength; + struct sockaddr_in serverAddress, clientAddress; + + serverAddress.sin_family = AF_INET; + serverAddress.sin_addr.s_addr = INADDR_ANY; + serverAddress.sin_port = htons(17); + + serverSocket = socket(serverAddress.sin_family, SOCK_STREAM, IPPROTO_IP); + if (serverSocket == -1) { + puts("socket not created"); + exit(1); + } + puts("socket created"); + + if (bind(serverSocket, (const struct sockaddr *) &serverAddress, sizeof serverAddress) < 0) { + puts("bind failed"); + exit(2); + } + + listen(serverSocket, 5); + + addressLength = sizeof(struct sockaddr_in); + clientSocket = accept(serverSocket, (struct sockaddr *) &clientAddress, (socklen_t *) addressLength); + if (clientSocket < 0) { + puts("client connection failed"); + exit(3); + } + puts("client connected"); + + write(clientSocket, "test", strlen("test")); + // TODO: listen and respond +} + +void udpServer() { + +} diff --git a/server.h b/server/server.h similarity index 58% rename from server.h rename to server/server.h index eb45368..bd9a600 100644 --- a/server.h +++ b/server/server.h @@ -7,9 +7,13 @@ #include #include +#include +#include +#include +#include -void tcpListen(); +void tcpServer(); -void udpListen(); +void udpServer(); #endif //QOTD_SERVER_H