#include "http.h" #include #include #include #include #include #include void *client_thread(void *vptr) { int fd = *((int *)vptr); return NULL; } int main(int argc, char *argv[]) { if (argc != 2) { printf("Usage: %s \n", argv[0]); return 1; } int port = atoi(argv[1]); printf("Binding to port %d. Visit http://localhost:%d/ to interact with your server!\n", port, port); // socket: int sockfd = socket(AF_INET, SOCK_STREAM, 0); // bind: struct sockaddr_in server_addr, client_address; memset(&server_addr, 0x00, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(port); bind(sockfd, (const struct sockaddr *)&server_addr, sizeof(server_addr)); // listen: listen(sockfd, 10); // accept: socklen_t client_addr_len; while (1) { int *fd = malloc(sizeof(int)); client_addr_len = sizeof(struct sockaddr_in); *fd = accept(sockfd, (struct sockaddr *)&client_address, &client_addr_len); printf("Client connected (fd=%d)\n", *fd); pthread_t tid; pthread_create(&tid, NULL, client_thread, fd); pthread_detach(tid); } return 0; }