motohime  | Bonjour.
   j'ai un soucis en programmation réseau. j'ai réalisé la connexion client serveur tout se passe bien , cependant pour la suite ... c'est pas encore ça   .     j'ai ouvert une socket que j'appellerais " Socket1 "en émission réception , lorsque je fait les accept ( ) coté serveur , cela m'ouvre une nouvelle socket que j'appellerais " Socket2 " pour la connexion distante qui tentais de se connecter. Ensuite je fait un select sur "Socket 1" cela me retourne 2 .  J'essaye donc de récupérer le message qui est envoyer et que le select a détecter, je fait donc un recvfrom avec la "socket1" mais a ce moment la ça me retourne -1.
   j'ai donc fait un perror ( "recvfrom" ); et il me log: NO ERROR....
   serais ce possible de m'expliquer où ce trouve mon erreur plz ?
   Merci d'avance
   voici plus concrétement le code:
  Code :
 - while ( !bClose )
 - 	{
 -   ID_IP.clear ( );
 -   //Verouille le mutex
 -   WaitForSingleObject ( myMutex, NULL );
 -   //Recuperation des données des utilisateurs connectés
 -   TheServer->Get_myID_Ip_User ( ID_IP );
 -   //Lock le mutex
 -   ReleaseMutex ( myMutex );
 -   if ( !ID_IP.empty ( ) )
 -   {
 -   	//Creation d'un iterateur au debut de la map
 -   	kstl::map < int, CONNEXION* >::iterator It = ID_IP.begin ( );
 -   	fd_set Set_Read;
 -   	fd_set Set_Exept;
 -   	fd_set Set_Write;
 -   	struct timeval tv;
 -   	struct sockaddr_in SenderInfo;
 -   	SenderInfo.sin_family = AF_INET;
 -   	tv.tv_sec = 0;
 -   	tv.tv_usec = 10000;
 -   	//Parcour de la map
 -   	while ( It != ID_IP.end ( ) )
 -   	{
 -     FD_ZERO ( &Set_Read );
 -     FD_ZERO ( &Set_Exept );
 -     FD_ZERO ( &Set_Write );
 -     FD_SET ( ( *It ).second->Socket, &Set_Read );
 -     FD_SET ( ( *It ).second->Socket, &Set_Write );
 -     FD_SET ( ( *It ).second->Socket, &Set_Exept );
 -     It++;
 -   	}
 -   	int iValue = select ( 0, &Set_Read, &Set_Write, &Set_Exept, &tv );
 -   	if ( iValue )
 -   	{
 -     kstl::map < int, CONNEXION* >::iterator It = ID_IP.begin ( );
 -     while ( It != ID_IP.end ( ) )
 -     {
 -     	if ( FD_ISSET ( ( *It ).second->Socket, &Set_Read ) )
 -     	{
 -       int test = 1;
 -       //Sauvegarder la connexion en lecture
 -     	}
 -     	if ( FD_ISSET ( ( *It ).second->Socket, &Set_Write ) )
 -     	{
 -       int test = 1;
 -       //Sauvegarder la connexion en ecriture
 -     	}
 -     	if ( FD_ISSET ( ( *It ).second->Socket, &Set_Exept ) )
 -     	{
 -       int test = 1;
 -       //Sauvegarder la connexion en erreur
 -     	}
 -     	It ++;
 -     }
 -   	}
 -   	char tab [1024*10] = {0};
 -   	int lenght = sizeof ( &SenderInfo );
 -   	kstl::map < int, CONNEXION* >::iterator It2 = ID_IP.begin ( );
 -   	int iReceiveLenght = recvfrom ( mySocket, tab, 1024*10, 0, ( struct sockaddr* ) &SenderInfo, &lenght );    // mySocket correspond a la socket ouverte en emission reception sur le serveur ( TCP ) ( "Socket1" dans ma description )
 -   	if ( iReceiveLenght > 0 )
 -   	{
 -     printf ( "Paquet recu\n" );
 -   	}
 -   	else
 -   	{
 -     perror( "recvfrom" );
 -     printf ( "Paquet non recu\n" );
 -   	}
 -   }
 - 	}
 - 	return 0;
 
  |  
    |