#include #include #include #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); }