With our many helper functions out of the way, we can now finish web_server.c. Remember to first #include chap07.h and also add in all of the types and functions we've defined so far—struct client_info, get_content_type(), create_socket(), get_client(), drop_client(), get_client_address(), wait_on_clients(), send_400(), send_404(), and serve_resource().
We can then begin the main() function. It starts by initializing Winsock on Windows:
/*web_server.c except*/int main() {#if defined(_WIN32) WSADATA d; if (WSAStartup(MAKEWORD(2, 2), &d)) { fprintf(stderr, "Failed to initialize.\n"); return 1; }#endif
We then use our earlier function, create_socket(), to create the listening socket. Our server listens on port 8080, but feel free ...