added simple socket server
This commit is contained in:
53
app.c
53
app.c
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user