Ejemplo n.º 1
0
int main (int argc, char *argv[]){

	//traitement parametres entree
	int listenPort = 25;
	int listenfd,connfd,pid;
	socklen_t len;
	struct sockaddr_in servaddr,cliaddr;
	struct sigaction;
//On ignore (SIG_IGN) le signal que chaque fils qui se termine envoie à son père (SIGCHLD)
//Ainsi, les fils ne passent pas par l'Etat zombie
signal(SIGCHLD,SIG_IGN);
listenfd=socket(AF_INET,SOCK_STREAM,0);//Creation du socket
if(listenfd < 0){
	perror("Error While Opening The Sotcket");
	exit(1);
}
bzero(&servaddr,sizeof(servaddr));//mise a zero de la structure

servaddr.sin_family=AF_INET;//IPv4
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);//connexion acceptée pour toute adresse(adresse de l'hote convertit   en adresse reseau)
servaddr.sin_port=htons(listenPort);//port sur lequel ecoute le serveur

if(bind(listenfd,(struct sockaddr *)& servaddr,sizeof(servaddr))<0){//on relie le descripteur à la structure de socket
	perror("ERROR Binding of Isaac (or the socket maybe ?");
	exit(7);
}
listen(listenfd,10);//convertit la socket en socket passive,attendant les connexions.   10=nombre maximal de clients mis en attente de connexion par le noyau
len=sizeof(cliaddr);
for(;;)
{

	connfd=accept(listenfd,(struct sockaddr*)&cliaddr,&len);
	if(connfd < 0){
		perror("ERROR Accepting the Connection (no more connection available ? ");
		exit(4);
	}
	printf("connexion : port %d\n",listenPort);
	pid=fork();
	if(pid<0){
		perror("Cannot create child process to treat the new connexion");
		exit(6);
	}
	if(pid==0)
	{
		/* Inside client process */
		close(listenfd);

		SmtpStatus Status = reception(connfd);//fonction chargée de travailler avec le client
		//Envoi du message au prochian relai
		envoi(&Status);

		close(connfd);
		}

	close(connfd);
}
return(0);
}
Ejemplo n.º 2
0
void afficheur::refreshAfficheur()
{
 // Serial.print("numSeq ");
  //Serial.println(_numSeq);
  
  if (_numMax==0) return;
  
  _numSeq=_numSeq+1;
  if (_numSeq>_numMax)
    {
      _numSeq=-1;
      envoi(0xFF);
    }
    else
    {
       envoi(_affichageEnCours[_numSeq]);
    }
}
Ejemplo n.º 3
0
void afficheur::affiche(byte toto)
{
  switch (toto)
    {
    case AFFICHERIEN : // affiche rien
        _affichageEnCours[0]=0xFF;
       Serial.println("Rien"); 
        _numMax =0;       
        break;
        
    case AFFICHEUSB : // affiche USB 
        _affichageEnCours[0]=0x89;//
        _affichageEnCours[1]=0xA4;//
        _affichageEnCours[2]=0x8C;//
        
       Serial.println("USB"); 
         
        _numMax =2;       
        break;
  
    case AFFICHESWEEP : // affiche SWEEP 
        _affichageEnCours[0]=0xA4;//
        _affichageEnCours[1]=0x9D;//
        _affichageEnCours[2]=0x86;
        _affichageEnCours[3]=0x86;
        _affichageEnCours[4]=0xC2; 
       Serial.println("SWEEP"); 
        _numMax =4;       
        break;
     
     case AFFICHEPOTAR : 
        _affichageEnCours[0]=0xC2;
        _affichageEnCours[1]=0x81;
        _affichageEnCours[2]=0x8E;
        _affichageEnCours[3]=0xC0;
        _affichageEnCours[4]=0xDE;
        _numMax=4;
       Serial.println("POtAr"); 
               
        break; 
     
     
     case AFFICHEMILIEU : // affiche Milieu 
  
        _affichageEnCours[0]=0xC1;
        _affichageEnCours[1]=0xF9;//
        _affichageEnCours[2]=0x8F;//
        _affichageEnCours[3]=0xF9;
        _affichageEnCours[4]=0x86;//
        _affichageEnCours[5]=0x89;//
       Serial.println("MILIEU"); 
        
        _numMax =5;       
        break;    

        case AFFICHEADAFRUIT : // affiche A Adafruit 
        _affichageEnCours[0]=0xC0;
        _affichageEnCours[1]=0x98;
        _affichageEnCours[2]=0xC0;
        _affichageEnCours[3]=0xC3;
        _affichageEnCours[4]=0xDE;
        _affichageEnCours[5]=0x89;
        _affichageEnCours[6]=0xF9;
        _affichageEnCours[7]=0x8E;
       Serial.println("ADAFrUIt"); 
        _numMax =7;       
        break;   
      
      
      case AFFICHECLASSIQUE : // affiche classique 
        _affichageEnCours[0]=0x87; 
        _affichageEnCours[1]=0x8F; 
        _affichageEnCours[2]=0xC0; 
        _affichageEnCours[3]=0xA4; 
        _affichageEnCours[4]=0xA4; 
        _affichageEnCours[5]=0xF9; 
        _affichageEnCours[6]=0xE0; 
        _affichageEnCours[7]=0x89; 
        _affichageEnCours[8]=0x86; 
       Serial.println("CLASSIQUE"); 
        
        _numMax =8;
           
        break;  

		
      
      
    }  
     _numSeq=0;
   // Serial.println(_affichageEnCours[0]);
     envoi(_affichageEnCours[0]);
    
  
  }
Ejemplo n.º 4
0
int main (int argc, char *argv[]) {
	
  struct sockaddr_in Connect,Data,Client;
  char segPerdu [7];
  int descData,descConnect;
  int portData=8080;
  int portConnect;
  int numSeg=0;
  socklen_t adrsize=sizeof(Client);
  
  
  
  //Initialisation du port de connexion
  
  if(argc ==2){
    portConnect = atoi(argv[1]);
    printf("Le port de Connection est :%d\n",portConnect);
  }
  else {
    printf("Pas le bon nombre d'arguments en entrée\n");
    return 0;
  }
  
  initSocket(&descConnect,portConnect,Connect); 
  initConnexion(descConnect,portData,(struct sockaddr*) &Client);
  //printf("Data %d %d\n", ntohl(Data.sin_addr.s_addr), ntohs(Data.sin_port));
  initSocket(&descData, portData, Data);
 
  FILE* fichier=openFich(descData,(struct sockaddr*) &Client,adrsize);
  
  fd_set readset;
  struct timeval tv;
  tv.tv_sec = 3;

  while(1){
	  

   FD_ZERO(&readset);
   FD_CLR(0, &readset);
   //printf("test1\n");
   FD_SET(descData, &readset);
   //printf("Erreur avant select\n");
   if(select(descData+1, &readset, NULL, NULL,&tv)==-1){
   perror("select");
   }
   //printf("Erreur après select\n");
   numSeg++;
   //printf("test3\n");

   if (FD_ISSET(descData, &readset)) {
	   printf("Erreur de récéption\n");
	   sleep(3);
	   //memset(segPerdu,0,7);
	   //recvfrom(descData,segPerdu,RCVSIZE,0, (struct sockaddr*) &Data,&adrsize);
	   //printf("Ce segment s'est égaté : %d\n", atoi(segPerdu));
	        
      
   }else{
	   printf("Envoi\n");
	   envoi(descData,numSeg,fichier,(struct sockaddr*) &Client,adrsize);
	   
	  /* sth to snd */
	   
   }
}
	  

}