/* SERVER */


#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <errno.h>
#include <signal.h>


#define PORT 2222



main()
{
int     i,sock,pid,rval,status;
socklen_t length;
unsigned long delay;
struct  sockaddr_in     server,client,sender;

 
 if((sock = socket(AF_INET,SOCK_DGRAM,0))<0)
   {
     perror("opening  datagram socket : ");
     exit(-2);
   }
 
 server.sin_family=      AF_INET;
 server.sin_addr.s_addr = INADDR_ANY;
 server.sin_port= htons(PORT);

 if(bind(sock,(struct sockaddr *)&server,sizeof(server))<0)
    {
      perror("binding datagram socket : ");
      exit(-3);

    }


  while(1)
    {
      length = sizeof(sender);

      recvfrom(sock,&pid,sizeof(pid),0,(struct sockaddr *)&sender,&length);



      kill(pid,SIGTERM);
      status = errno ;

      printf("Server : ho terminato il processo %d con esito %s\n",pid,strerror(errno));
      sendto(sock,&status,sizeof(status),0,(struct sockaddr *)&sender,sizeof(sender));

    }

}
