#include "socktools.h"
#include <unistd.h>

extern int PORT, NMAX;
extern char *SERV;
extern unsigned int TAILLE;

int sdcnet( int sd, int n )
{ int  res = 0, val, nbproc = 0;
  struct sockaddr client;
  while ( n || nbproc  ) {  
      val = recvpaquetfrom( sd, &client );
      printfrom( &client );
      if ( val ) { 
	printf("-> %d", val);
	res += val;  
	nbproc--;
      } else { 
	sendpaquetto( sd, &client, n );
        if ( n ) { nbproc++; n--;}
      }
      printf("\n%d actifs, reste=%d sdc=%d", nbproc, n, res);
  }
  sendpaquetto( sd, &client, 0);
  return res;
}


void optionold( char* str)
{ if ( *str != '-') *str='h'; else str++;
  switch ( *str) { 
  case 'p' : str++; PORT = atoi(str);  break;    
  case 'n' : str++; NMAX = atoi(str); break;   
  case 'h' : printf("\nusage: -port -nmax\n");
  default  : exit(1); 
  };
}

int main(int argc, char *argv[])
{ int  sd, res = 0;
  struct sockaddr_in serv; 

  if ( ! argok( argc, argv )  ) return 1;

  sd = socket( AF_INET, SOCK_DGRAM, 0);

  serv = sockaddrinlocal( PORT );

  bind( sd, (struct sockaddr *) &serv, sizeof(serv));

  res = sdcnet( sd, NMAX );
  printf("\nSomme %d premiers carres : %d", NMAX, res);
  close(sd);
  return 0;
}
