added simple socket server

This commit is contained in:
Daniel Ledda
2025-11-27 23:45:15 +01:00
parent cbedadd36e
commit 9b772e2046
5 changed files with 187 additions and 34 deletions

53
app.c
View File

@@ -1,13 +1,52 @@
#define DJSTD_BASIC_ENTRY
#include "core.c"
#include "signal.h"
int main(int argc, char **argv) {
initialiseDjStdCore();
Arena *arena = arenaAlloc(Megabytes(64));
StringList args = getArgs(arena, argc, argv);
Server *server = NULL;
print("Args:\n");
printStrList(args);
printStrList(strSplit(arena, s("-"), s("the-quick-brown-fox-jumps-over-the-lazy-dog")));
void handleSigint(int dummy) {
if (server) {
print("\n");
print("Closing server socket.\n");
serverClose(server);
print("Success\n.");
}
exit(0);
}
int djstd_entry(Arena *arena, StringList args) {
signal(SIGINT, &handleSigint);
int port = 8080;
Int32Result portParsed = parsePositiveInt(args.data[0]);
if (portParsed.valid) {
port = portParsed.result;
}
print("Starting server on port %d\n", port);
Server myserver = serverInit((ServerInitInfo){
.concurrentClients=16,
.port=port,
.memory=Megabytes(64),
});
server = &myserver;
serverListen(&myserver);
Client *client = serverAccept(&myserver);
CharList buf = PushFullListZero(arena, CharList, 257);
uint64 bytesRead = clientRead(client, (void *)buf.data, buf.length - 1);
if (bytesRead > 0) {
print("Client said: %s\n", buf.data);
print("Now that's insightful.\n");
} else if (bytesRead == -1) {
print("Connection error\n");
}
clientClose(client);
return 0;
}