53 lines
1.2 KiB
C
53 lines
1.2 KiB
C
#define DJSTD_BASIC_ENTRY
|
|
|
|
#include "core.c"
|
|
#include "signal.h"
|
|
|
|
Server *server = NULL;
|
|
|
|
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;
|
|
}
|