#include #include #include #include #include #include // dont use stdio in these volatile sig_atomic_t running = 1; void sig_int_handler(int num) { running = 0; } void on_message(struct Server* server, struct AcceptedSocket* cur_socket, char message[], ssize_t amountRecv) { if (amountRecv > 0) { printf("%s\n", message); soc_broadcast(server,cur_socket,message); } } int main(int argc, char* argv[]) { if (argc < 2) { fprintf(stderr, "arg1 must be set for port\n"); exit(-1); } int port = atoi(argv[1]); if (port == 0) { fprintf(stderr, "port must not be 0\n"); exit(-1); } struct Server server = server_constructor(AF_INET, SOCK_STREAM, 0, INADDR_ANY, port, 10); server.on_message = on_message; init_socket_server(&server); struct sigaction act = { 0 }; act.sa_handler = &sig_int_handler; sigaction(SIGINT, &act, NULL); while (running) { pause(); } int shut_err = server_close_socket(&server); printf("shutdown with %d\n", shut_err); return 0; }