#include <stdio.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <fcntl.h>

main(int argc, char **argv) {
   int maxconn=10;
   char *addr="127.0.0.1";
   int port=80;
   int sock;
   int conn, nbconn, nbconnok=0;
   struct sockaddr_in saddr;

   if (argc < 4) {
     fprintf(stderr,"usage : %s <addr> <port> <nbconn> [1|2]\n",argv[0]);
     exit(1);
   }
   addr=argv[1];
   port=atoi(argv[2]);
   maxconn=atoi(argv[3]);
   for (nbconn=0; nbconn<maxconn; nbconn++) {
     sock=socket(AF_INET, SOCK_STREAM, 0);
     bzero(&saddr, sizeof(saddr));
     saddr.sin_addr.s_addr=inet_addr(addr);
     saddr.sin_port=htons(port);
     saddr.sin_family=AF_INET;
     if ((conn=connect(sock,&saddr,sizeof(saddr))) < 0) {
//       fprintf(stderr,"ERROR: connect()=%d, nbconn=%d : ",conn,nbconn);
//       perror("");
//       usleep(300000);
     }
     else {
       fcntl(sock, F_SETFL, O_NONBLOCK);
       nbconnok++;
       if (argc>4) {
         write(sock,"GET / HTTP/1.0\r\n",16);
	 if (*argv[4]=='2')
           write(sock,"\r\n",2);
       }
     }
     fprintf(stderr,"%d / %d \r",nbconnok,nbconn+1);
   }
   fprintf(stderr,"%d connections established.\nPress any key so exit.\n",nbconnok);
   getchar();
   exit(0);
}
