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 to change it. On Unix-based systems, listening on low port numbers is reserved for privileged accounts. For security reasons, our web server should be running with unprivileged accounts only. This is why we use 8080
as...