gatorette a écrit :
 
 Apparemment, c'est ton contrôleur ethernet qui gère le stack TCP/IP. De plus, selon la datasheet, il propose une API "proche des sockets Windows".
 
   | 
 
 
  
Non ,je ne boucle pas avant d'envoyer le 2° paquet .j'envoie les deux l'un aprés l'autre pdt que la connection est etablie puis ensuite je ferme la connection.
voici le main:
void main()
{
   SOCKET i;   //c'est un entier qui designe le numero de socket
   int len,x;
   u_char state;
   u_char type;
 
   Init8051();   //initialisation du microcontroleur
   initW3100A();   //initialisation du controleur Ethernet  
   InitNetConfig();// initialisation des parametres réseau  
 
for (i = 0; i < MAX_SOCK_NUM; i++) init_sock(i);
 
x=0;
while (1)  
{
i = 0;
 for (i = 0; i < MAX_SOCK_NUM; i++)  
  {  
    state=select(i, SEL_CONTROL);//retourne l'etat de la conect°    
 switch(state)  
  {
    case SOCK_ESTABLISHED :    //connection etablie
     if ((len = select(i, SEL_RECV)) > 0) //Confirm de reception
        {      
         if (len > MAX_BUF_SIZE)len = MAX_BUF_SIZE;/*When received data more than system buffer,handle as size as buffer*/
  len = recv(i, rx_buf, len);
  type = ParseReq(rx_buf,x);	/* Analyze request*/
       
  len =PrintHeader(tx_buf ,'g'); //le header
         
 switch (type) /* Transfer web page as for each request	*/
{
    case 'g':    /* gif processing*/
//1er ENVOIE:        
len += MSG_Length(tx_buf + len, 3571);//taille du tablo entier
memcpy(tx_buf +len,tab,1800);//1° envoie on remplie le buf  
len += 1800;//la taille de la premiere partie envoyé
len = send(i, tx_buf, len);	//on envoie le buf  
//2eme ENVOIE:
memcpy(tx_buf,tab,1900);//2° envoie on recrit par dessus le buf  
len = 1900;//la taille de la 2° partie envoyé
len = send(i, tx_buf, len);	//on envoie la deuxieme partie  
 
 break;
       
 }
}
break;
   case SOCK_CLOSE_WAIT :  /* Terminate connection*/
printf("CLOSE_WAIT : %bd\r\n", i);
close(i);		/* SOCKET CLOSE*/
 break;
     case SOCK_CLOSED :		/* Close conneciton*/
 printf("CLOSED : %bd\r\n",i);
 init_sock(i);      
 break;
   }
 	}	/*for*/
	} /* while*/  
}
 
Message édité par rachton le 29-08-2003 à 09:28:42