This commit is contained in:
2025-07-28 09:03:00 +01:00
commit f86fcc977e
6 changed files with 174 additions and 0 deletions

79
main.c Normal file
View File

@@ -0,0 +1,79 @@
#include <stdio.h>
#include <winsock2.h>
#include <pthread.h>
#include "main.h"
#include "data.h"
#define PORT 40000
#define BUFFER_SIZE 1024
int main()
{
// load_file();
WSADATA WSAData;
SOCKET client;
SOCKADDR_IN serverAddr, clientAddr;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET server = socket(AF_INET, SOCK_STREAM, 0);
serverAddr.sin_addr.s_addr = INADDR_ANY;
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(PORT);
bind(server, (SOCKADDR *)&serverAddr, sizeof(serverAddr));
listen(server, 0);
printf("Listening for incoming connections...\n");
char buffer[BUFFER_SIZE] = {0};
int clientAddrSize = sizeof(clientAddr);
int recieved;
char_array_t *reply = char_array_create(1024);
while((client = accept(server, (SOCKADDR *)&clientAddr, &clientAddrSize)) != INVALID_SOCKET)
{
printf(" Client connected!\n");
while ((recieved = recv(client, buffer, sizeof(buffer), 0)) > 0) {
printf(" Client says: |%.1024s|\n",buffer);
char_array_append(reply, buffer, recieved);
if (buffer[recieved] == '\0') {
break;
}
memset(buffer, 0, sizeof(buffer));
Sleep(10);
}
printf(" Sending back...\n");
printf(" Sending back: |%d| \n", reply->size);
send(client, reply->data,reply->size,0);
char_array_wipe(reply);
closesocket(client);
printf("Client disconnected.\n");
}
}
void echo(SOCKET client) {
char buffer[BUFFER_SIZE] = {0};
char_array_t *reply = char_array_create(BUFFER_SIZE);
int bytesReceived;
while ((bytesReceived = recv(client, buffer, sizeof(buffer), 0)) > 0) {
printf(" Client says: |%.1024s|\n",buffer);
char_array_append(reply, buffer, bytesReceived);
if (buffer[bytesReceived] == '\0') {
break;
}
memset(buffer, 0, sizeof(buffer));
Sleep(10);
}
printf(" Sending back...\n");
printf(" Sending back: |%llu| \n", reply->size);
send(client, reply->data,reply->size,0);
closesocket(client);
}