Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| #include "unp.h" | |
| int | |
| main(int argc, char **argv) | |
| { | |
| int listenfd, connfd; | |
| pid_t childpid; | |
| socklen_t clilen; | |
| struct sockaddr_in cliaddr, servaddr; | |
| void sig_chld(int); | |
| listenfd = Socket(AF_INET, SOCK_STREAM, 0); | |
| bzero(&servaddr, sizeof(servaddr)); | |
| servaddr.sin_family = AF_INET; | |
| servaddr.sin_addr.s_addr = htonl(INADDR_ANY); | |
| servaddr.sin_port = htons(SERV_PORT); | |
| Bind(listenfd, (SA *) &servaddr, sizeof(servaddr)); | |
| Listen(listenfd, LISTENQ); | |
| Signal(SIGCHLD, sig_chld); | |
| for ( ; ; ) { | |
| clilen = sizeof(cliaddr); | |
| connfd = Accept(listenfd, (SA *) &cliaddr, &clilen); | |
| if ( (childpid = Fork()) == 0) { /* child process */ | |
| Close(listenfd); /* close listening socket */ | |
| str_echo(connfd); /* process the request */ | |
| exit(0); | |
| } | |
| Close(connfd); /* parent closes connected socket */ | |
| } | |
| } |