serverTCP.c 1.21 KB
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <getopt.h>
#include <string.h>
#include <signal.h>
#include "libnet.h"
#include <time.h>

int sock_fd;

struct sigaction action;

void handler(int sig)
{
  if(sig==SIGINT)
    {
      printf("\nINTERRUPTION SOCKET : %d\n\n", sock_fd);
      close(sock_fd);
      exit(1);
    }
}


void argPortParsing(int argc, char* argv[], char* port)
{
  struct option port_arg={"port", 1, NULL, 'p'}; // 
  char opt;
  int longindex;

  while( (opt=getopt_long(argc, argv, "p:", &port_arg, &longindex)) !='p' && opt!=-1) {}

  if(opt=='p') 
    {
      strcpy(port, optarg); //optarg est une variable instanciée dans la librairie getopt
      //printf("%s\n", optarg);
    }
  else
    {
      printf("La syntaxe doit être de la forme %s -p <port> ou %s --port <port>\n\n", argv[0], argv[0]);
    }
}


int main(int argc, char* argv[])
{
  char port[10]="80"; //Port par défaut
  argPortParsing(argc, argv, port);
	
  action.sa_handler=&handler;
  sigaction(SIGINT, &action, NULL);
  
  if( (sock_fd=initialisationServeur(port)) ==-1 ) { fprintf(stderr, "Initialisation du serveur impossible\n"); return -1; }

  boucleServeur(sock_fd, (void*)&reponseConnexion);
	
  return 0;
}