3
This commit is contained in:
@@ -16,6 +16,7 @@ void Signal(int sig, sighandler_t handler){
|
||||
sigaction(SIGCHLD, &sa, NULL);
|
||||
}
|
||||
|
||||
//工作函数
|
||||
void toggle(int conn_sock,int hit)
|
||||
{
|
||||
size_t n; int i,no=0;
|
||||
@@ -63,20 +64,20 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
for(hit=1; ; hit++) {
|
||||
conn_sock = accept(listen_sock, (SA *) &clientaddr, &clientlen);
|
||||
conn_sock = accept(listen_sock, (SA *) &clientaddr, &clientlen);
|
||||
|
||||
/* determine the domain name and IP address of the client */
|
||||
hp = gethostbyaddr((const char *)&clientaddr.sin_addr.s_addr,
|
||||
sizeof(clientaddr.sin_addr.s_addr), AF_INET);
|
||||
haddrp = inet_ntoa(clientaddr.sin_addr);
|
||||
printf("server connected to %s (%s)\n", hp->h_name, haddrp);
|
||||
/* determine the domain name and IP address of the client */
|
||||
hp = gethostbyaddr((const char *)&clientaddr.sin_addr.s_addr,
|
||||
sizeof(clientaddr.sin_addr.s_addr), AF_INET);
|
||||
haddrp = inet_ntoa(clientaddr.sin_addr);
|
||||
printf("server connected to %s (%s)\n", hp->h_name, haddrp);
|
||||
|
||||
if (fork() == 0) {
|
||||
close(listen_sock); /* Child process closes its listening socket */
|
||||
toggle(conn_sock,hit); /* Child process services client */
|
||||
close(conn_sock); /* Child process closes connection with client */
|
||||
exit(0); /* Child process exits */
|
||||
}
|
||||
close(conn_sock); /* Parent closes connected socket (important!) */
|
||||
if (fork() == 0) {
|
||||
close(listen_sock); /* Child process closes its listening socket */
|
||||
toggle(conn_sock,hit); /* Child process services client */
|
||||
close(conn_sock); /* Child process closes connection with client */
|
||||
exit(0); /* Child process exits */
|
||||
}
|
||||
close(conn_sock); /* Parent closes connected socket (important!) */
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user