pid=fork();
//El hijo envia a la pantalla todo lo recibido desde el otro extremo
if (pid==0)
{
while(1)
{
leidos=read(c_sock,buf,2000);
if (leidos>0)
{
buf[leidos]=0;
printf("Cliente dice: %sn",buf);
if (indicador==1)
{
fprintf(f,"%sn",buf);
}
}
else
{
printf("nEl otro extremo ha cerrado la conexionn");
close(c_sock);
close(sock);
exit(0);
}
}
}
//El programa principal envia todo lo recibido por teclado
else
{
printf("Conexion aceptadanEscriba /quit para salirn");
printf("Escriba /info para obtener informacion sobre el otro extremon");
printf("Escriba /log si desea guardar la conversacion en un ficheron");
printf("Escriba /nolog si lo que desea es dejar de guardar la conversacion en un ficheron");
while(1)
{
leer_cad(txt);
if (!strcmp(txt,"/quit"))
{
close(sock);
kill(pid,SIGKILL);
exit(0);
}
if (!strcmp(txt,"/info"))
{
printf("La conexion ha sido establecida con n");
printf("la ip %d.%d.%d.%d puerto %sn",ip[0],ip[1],ip[2],ip[3],argv[2]);
}
if (!strcmp(txt,"/log"))
{
printf("Dame el nombre del fichero: n");
scanf("%s",string);
f=fopen(string,"w");
if (!f)
{
printf("No puedo abrir el fichero %sn",string);
return;
}
indicador=1;
}
if (!strcmp(txt,"/nolog"))
{
indicador=0;
fclose(f);
}
else
{
write(c_sock,txt,sizeof(txt));
if (indicador==1)
{
fprintf(f,"%sn",txt);
}
}
}
}
}
}