IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

fonctionnement étrange de recv()


Sujet :

Réseau C

  1. #1
    Membre à l'essai
    Profil pro
    étudiant ingénieur
    Inscrit en
    Juin 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : étudiant ingénieur

    Informations forums :
    Inscription : Juin 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut fonctionnement étrange de recv()
    Bonjour à toutes et à tous.

    Vous ai t'il déjà arrivé d'avoir le buffer passé en paramètre de recv() prendre la valeur de celui passé en paramètre de send() ?

    Contexte :
    J'ai trois thread, un qui traite les données à envoyer, un qui traite les données reçues et le dernier qui communique avec un serveur.

    Reception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    	fd_set fdRead;
    	int n;
    	struct timeval timeoutSel;
    	char buffer[256];
     
    	if(Gprs_Call_State < GPRS_CALL_TCP_DISCONNECT_IN_PROGRESS && Gprs_Call_State >= GPRS_CALL_TCP_CONNECTED)
    	{
    		timeoutSel.tv_sec = time;
    		timeoutSel.tv_usec = 0;
     
    		FD_ZERO(&fdRead);
    		FD_SET(sockfd, &fdRead);
    		if(select(sockfd + 1, &fdRead, NULL, NULL, &timeoutSel) == -1)
    		{
    			perror("select()\r\n");
    			return -1;
    		}
    		if(FD_ISSET(sockfd, &fdRead))
    		{
    			n = recv(sockfd, buffer, 256, 0);
     
    			if( n == 0)/* Server down*/
    			{
    				perror("grps_recv_data()");
    				exit(erno);
    			}
    			puts(buffer);
    		}
    	}
    envoi
    appel de gprs_send_data_by_TCP() par le thread de gestion des données a envoyer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    int gprs_send_data_by_TCP(const char *data, const size_t length)
    {
    	if(strlen(TCP_buffer) < length && Gprs_Call_State < GPRS_CALL_DISCONNECT_START
    			&& Gprs_Call_State >= GPRS_CALL_CONNECTED)
    	{
    		strcpy(TCP_buffer, data);
    		return 0;
    	}
    	else
    	{
    		return -1;
    	}
    }
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    if(TCP_buffer[0] != '\0')
    {
            ret = send(sockfd, TCP_buffer, strlen(TCP_buffer), MSG_DONTWAIT);
    	if(ret < 0)
    	{ //Error
    		perror("Error send");
    		Gprs_Call_State = GPRS_CALL_TCP_DISCONNECT_START;
    	}
    	else if(ret < strlen(TCP_buffer))
    	{
    		puts("\r\nconnection interrupted \r\n");
    		Gprs_Call_State = GPRS_CALL_TCP_DISCONNECT_START;
    	}
    	else
    	{ //OK
    		memset(TCP_buffer, '\0', GPRS_STRMAXSIZE);
    		Gprs_Call_State = GPRS_CALL_TCP_CONNECTED;
    	}
    }
    Merci

  2. #2
    Membre à l'essai
    Profil pro
    étudiant ingénieur
    Inscrit en
    Juin 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : étudiant ingénieur

    Informations forums :
    Inscription : Juin 2010
    Messages : 37
    Points : 12
    Points
    12
    Par défaut
    Solution trouvé c’était bêtement mon serveur (hercule) qui était en mode echo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonctionnement étrange avec jquery
    Par zerros dans le forum jQuery
    Réponses: 4
    Dernier message: 28/01/2014, 12h47
  2. [PEAR] Fonctionnement étrange
    Par madevilts dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 17/04/2012, 09h20
  3. Fonctionnement étrange de Chrome
    Par oguillin dans le forum Google Chrome
    Réponses: 0
    Dernier message: 04/06/2010, 11h51
  4. Requête avec un fonctionnement étrange
    Par grincheux01 dans le forum SQL
    Réponses: 4
    Dernier message: 17/04/2009, 18h16
  5. Comment fonctionne recv () ?
    Par mayu5 dans le forum Réseau
    Réponses: 7
    Dernier message: 28/04/2008, 11h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo