#include #include #include #include #include #include #include #include #include int panic(char *where) { fprintf(stderr, "error at %s '%s'\n", where, strerror(errno)); exit(127); } int main(void) { int sd; struct sockaddr_in local_addr; int local_addr_len = sizeof(local_addr); if ((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0) panic("socket"); bzero((void *) &local_addr, local_addr_len); local_addr.sin_family = AF_INET; local_addr.sin_port = htons(8005); local_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); if (bind(sd, (struct sockaddr *) &local_addr, local_addr_len) < 0) panic("bind"); if (listen(sd, SOMAXCONN) < 0) panic("listen"); while (1) { int new_sd; struct sockaddr_in client_addr; unsigned int client_addr_len = sizeof(struct sockaddr); new_sd = accept(sd, (struct sockaddr*) &client_addr, &client_addr_len); if (new_sd < 0) panic("accept"); printf("New connection on socket descriptor %d\n", new_sd); close (new_sd); } close(sd); return 0; }