I don't know where I have to put my close():
my code is like this:
do I put my close(s) in the if, else, or elsewhere?Code:#define SOCKET_ERROR -1 #define STRGLEN 100 /* message string length */ const int APORT = 1234; /* port number */ /* Function main */ main(){ int fromlen; char hostname[64]; /* local machine hostname */ struct hostent *hp; /* gethostbyname return ptr */ register int s; /* socket descriptor, or -1 if error */ register int ns; /* created new socket for accept */ struct sockaddr_in sin; /* socket structure */ struct sockaddr_in fsin; /* socket str. for accept*/ int p1; /* first need to know our hostname. */ gethostname(hostname, sizeof(hostname)); /* Next look up the network address of our host.*/ if((hp = gethostbyname(hostname)) == NULL){ fprintf(stderr, "%s: unknown host\n", hostname); exit(-1); } /* create socket in Internet domain(AF_INET), that is connection oriented (SOCK_STREAM) rather than connectionless (SOCK_DGRAM), arg3=0 for default TCP/IP protocol*/ if(( s = socket(AF_INET, SOCK_STREAM, 0) ) < 0){ perror("server: socket"); exit(-1); } /* Create the address to connecting to. We use port APORT but put it into network byte order. Also we use bcopy to copy the network number. */ bzero(&sin, sizeof(sin)); sin.sin_family = AF_INET; /* IP protocol */ /* sin.sin_addr.s_addr = INADDR_ANY;*/ sin.sin_port = htons(APORT); bcopy(hp->h_addr, &sin.sin_addr, hp->h_length); /* Try to bind(address and port no.)to socket s */ if(bind(s, (struct sockaddr *)&sin, sizeof(sin)) < 0){ perror("server: bind"); exit(-1); } /* server ready, listen on socket s max 2 requests queued*/ if(listen(s, 2) < 0) { perror("server: listen"); exit(-1); } /* Accept connections then fork ns (new socket) that will be connected to the client. fsin will contain the IP address of the client. */ bzero(&fsin, sizeof(fsin)); fromlen = sizeof(fsin); if((ns = accept(s, (struct sockaddr *)&fsin, &fromlen))<0){ perror("server: accept"); exit(-1); } if((p1 = fork()) > 0){ server(ns); } else{ /* child */ server(ns); } }



LinkBack URL
About LinkBacks


