Le hice unos cambios la código:
int ACEPTAR,PID;
bind(SOCKET,(sockaddr*)&SERVER,TAMSOCK);
listen(SOCKET,10);
if((ACEPTAR = accept(SOCKET, (sockaddr*)&SERVER , &TAMSOCK)) < 0 )
printf("Servidor Error\n");
if((PID = fork()) == -1){
printf("Error Creando hilo...");
}else if (PID == 0){
PROCE_HIJO(&SERVER,TAMSOCK,ACEPTAR,SOCKET);
}else{
PROCE_PADRE(&SERVER,TAMSOCK,ACEPTAR,SOCKET);
}
//ZOMBIES(&SERVER,TAMSOCK,ACEPTAR,SOCKET); //proce_hijo.hpp
Código Padre:
No tiene nada pues lo que quiero es que las conexiones sean atendidas por los hijos del padre :/
void PROCE_PADRE(struct sockaddr_in *SERVER,TAMSK TAMSOCK, int ACEPTAR, int SOCKET){
close( SOCKET );
close( ACEPTAR );
printf("FIN _ padre\n");
exit(0);
}
Código Hijo:
void ZOMBIES(struct sockaddr_in *SERVER,TAMSK TAMSOCK, int ACEPTAR, int SOCKET){
}
void PROCE_HIJO(struct sockaddr_in *SERVER,TAMSK TAMSOCK, int ACEPTAR, int SOCKET){
char BIENVENIDO[] = "Bienvenido Zombie\n",BUFFER[tBUFFER];
send( ACEPTAR, BIENVENIDO, sizeof(BIENVENIDO), 0);
while((strcmp(BUFFER,"FIN"))){
int bytes;
if((bytes = recv(ACEPTAR , BUFFER , TAMSOCK , 0 )) == -1){
printf("Error al resivir datos...\n");
}else{
/****************************************
*
* Aqui van el codigo para resivir datos
*
* **************************************/
printf("%s\n",BUFFER);
}
//if(!(strcmp(BUFFER,"FIN"))) break; //Si Resive la palabra FIN termina el bucle
}
printf("FIN _ Hijo\n");
exit(0);
}
La función ZOMBIE la eliminare después cuando no tenga mas utilidad todavía no lo se...
ahora solo con el cambio que hice se me combierte en bucle infinito,
while((strcmp(BUFFER,"FIN"))){
}
Antes de crear el hijo ese código estaba en la función zombie, y me funcionaba perfectamente,
lo que yo quiero hacer es que exista un padre que lo que haga sea aceptar clientes
digamos:
PADRE-----------HIJO
\\ \\
HIJO HIJO