All pastes #948865 Raw Edit

Untitled

public text v1 · immutable
·published 2008-03-19 14:14 UTC
rendered paste body
                for(i = 0; i <= fdmax; i++) {

                        if (FD_ISSET(i, &read_fds)) { /
                                FILE *fp;
                                if (i == listener) {
                                        //handle new connections
                                        addrlen = sizeof remoteaddr;
                                        if ((newfd = accept(listener, (struct sockaddr *)&remoteaddr, &addrlen)) == -1) {
                                                perror("accept");
                                        } else {
                                                FD_SET(newfd, &master); //add to master set
                                                if (newfd > fdmax) {    //keep track of the maximum
                                                        fdmax = newfd;
                                                }
                                               
                                        }
                                } else {
                                        //handle data from a client

                                        if ((nbytes = recv(i, buf, sizeof buf, 0)) <= 0) {
                                                //got error or connection closed by client
                                                if (nbytes == 0) {
                                                        //connection closed
                                                        printf("selectserver: socket %d hung up\n", i);
                                                } else {
                                                        perror("recv");
                                                }
                                                close(fp);
                                                close(i); //bye!
                                                FD_CLR(i, &master); //remove from master set
                                        } else {
                                               //how can i free the memory and remove the part i fwrite ? 
                                               fwrite(buf,sizeof(buf),1, fp)  ;
                                                   
                                        }
                                }
                        }
                }