From aed22bdd5e44b8083abea43420c730a35d936e9d Mon Sep 17 00:00:00 2001 From: lolcat Date: Sat, 9 Mar 2024 22:07:29 -0500 Subject: [PATCH] accepts a single tcp connection --- chat | Bin 0 -> 16640 bytes proto.md | 2 +- src/chat.c | 107 ++++++++++++++++++++++++++++++++++++++++++++++ src/configutils.c | 6 +++ 4 files changed, 114 insertions(+), 1 deletion(-) create mode 100755 chat create mode 100644 src/chat.c create mode 100644 src/configutils.c diff --git a/chat b/chat new file mode 100755 index 0000000000000000000000000000000000000000..1772d629633c1206488870fa418fda649b3f8c2d GIT binary patch literal 16640 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 literal 0 HcmV?d00001 diff --git a/proto.md b/proto.md index 5ef583f..65084e3 100644 --- a/proto.md +++ b/proto.md @@ -9,7 +9,7 @@ lulchat relies on HTTP, webRTC and websocket technologies. We use this in order When we refer to data types, always assume that they are being sent over the wire in network-byte order (big endian). # Usernames -Usernames must only contain alphanumeric characters, numbers, and underscores. Must contain between 3 and 21 characters. The following RegexP validates all usernames: +Usernames must only contain alphanumeric characters, numbers, and underscores. Must contain between 1 and 21 characters. The following RegexP validates all usernames: ```sh ^[A-Za-z0-9_]{1,21}$ ``` diff --git a/src/chat.c b/src/chat.c new file mode 100644 index 0000000..75f2e32 --- /dev/null +++ b/src/chat.c @@ -0,0 +1,107 @@ +#include +#include // sleep +#include +#include +#include +#include + +#define PORT 8080 + +void *loop(){ + + while(1) { + sleep(1); + printf("testing\n"); + } +} + +int main(int argc, char *argv[]){ + + int server_handle; + if((server_handle = socket(AF_INET, SOCK_STREAM, 0)) < 0){ + + perror("Failed to create socket"); + exit(1); + } + + int opt = 1; + if( + setsockopt( + server_handle, + SOL_SOCKET, + SO_REUSEADDR | SO_REUSEPORT, + &opt, + sizeof(opt) + ) + ){ + + perror("Could not set socket options"); + exit(1); + } + + struct sockaddr_in address; + address.sin_family = AF_UNSPEC; + address.sin_addr.s_addr = INADDR_ANY; + address.sin_port = htons(PORT); + if( + ( + bind( + server_handle, + (struct sockaddr*)&address, + sizeof(address) + ) + ) < 0 + ){ + + perror("Failed to bind to socket"); + exit(1); + } + + if( + listen( + server_handle, + 3 + ) < 0 + ){ + + perror("Failed to listen to socket"); + exit(1); + } + + printf("[INFO] Listening for connections\n"); + + int client_handle; + socklen_t addrlen = sizeof(address); + //while(1){ + + if( + ( + client_handle = accept( + server_handle, + (struct sockaddr*)&address, + &addrlen + ) + ) < 0 + ){ + + perror("Failed to accept client connection"); + exit(1); + } + //} + + ssize_t buffer_read; + + while(1){ + char buffer[1024] = {0}; + buffer_read = read(client_handle, buffer, 1023); + + printf("Message (%zd): %s", buffer_read, buffer); + send(client_handle, buffer, strlen(buffer), 0); + } + + return 0; + /* + pthread_t thread_id; + pthread_create(&thread_id, NULL, loop, NULL);*/ + //pthread_join(thread_id, NULL); +} diff --git a/src/configutils.c b/src/configutils.c new file mode 100644 index 0000000..2d32240 --- /dev/null +++ b/src/configutils.c @@ -0,0 +1,6 @@ +#include + +int main(){ + + printf("boobs"); +}