diff --git a/client/main.c b/client/main.c index 1a75cdb..5a514e4 100644 --- a/client/main.c +++ b/client/main.c @@ -39,7 +39,7 @@ int main(int argc, char *argv[]) { puts("payload sent"); char response[2048]; - if (recv(sock, response, 2048, 0)) { + if (recv(sock, response, 2048, 0) < 0) { puts("receive failed"); return 4; } diff --git a/server/server.c b/server/server.c index b6c4716..1ba3623 100644 --- a/server/server.c +++ b/server/server.c @@ -6,8 +6,11 @@ void tcpServer() { int serverSocket, clientSocket; + long read_size; unsigned long addressLength; struct sockaddr_in serverAddress, clientAddress; + char quote[MESSAGE_STRING_LENGTH] = ""; + char clientMessage[MESSAGE_STRING_LENGTH] = ""; serverAddress.sin_family = AF_INET; serverAddress.sin_addr.s_addr = INADDR_ANY; @@ -30,15 +33,30 @@ void tcpServer() { puts("server listening"); addressLength = sizeof(struct sockaddr_in); - clientSocket = accept(serverSocket, (struct sockaddr *) &clientAddress, (socklen_t *) addressLength); + while ((clientSocket = accept(serverSocket, (struct sockaddr *) &clientAddress, (socklen_t *) &addressLength)) >= 0) { + puts("client connected"); + + /*receive data*/ + while ((read_size = recv(clientSocket, clientMessage, MESSAGE_STRING_LENGTH, 0))) { + if (read_size < 0) { + puts("receive failed"); + } else { + printf("client says: %s\n", clientMessage); + + /*send data*/ + getRandomQuote(quote); + printf("responding: \"%s\"\n", quote); + write(clientSocket, quote, strlen(quote)); + } + } + + puts("client disconnected"); + } + 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/server.h b/server/server.h index bd9a600..1a15a31 100644 --- a/server/server.h +++ b/server/server.h @@ -12,6 +12,10 @@ #include #include +#include "quote.h" + +#define MESSAGE_STRING_LENGTH 2048 + void tcpServer(); void udpServer();