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 :

pointeurs en c


Sujet :

Réseau C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Par défaut pointeurs en c
    Bonjour,
    encore des pbs avec le c ..... lol
    en fait je voudrais écrire un programme qui prends en entrée un poiteur buffer sur char (char *buffer), un autre pointeur tab sur char (char *tab). ce que je voudrais faire est le suivant :
    - chaque fois où j'ai des données sur la zone mémoire pointé sur tab, je mets ces données à la fin du buffer.
    - apres je vais faire des traitements sur la zone mémoire pointé par buffer et chaque fois que je traite un élément je passe à l'élément suivant et je libère la zone mémoire qui a été allouvé pour cet élément.
    svp, comment pourrais je faure ca ... merci bcp pour votre aide
    Sara

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    J'ai pas tout compris. En particulier:

    • comment les données arrivent-elles dans le tableau pointé par tab? Quelle type de données? Chaines de caractères? Caractères?
    • Tu parles d'ajouter les éléments contenus par tab à la fin du tampon pointé par buffer. Est-ce une concaténation de chaine?
    • Tu parles d'effectuer un traitement sur chaque donnée contenue dans le tampon pointé par buffer. Comment différencies-tu les différents éléments?


    Je ne comprends pas bien la spécification du problème que tu essaies de résoudre. Peux-tu nous en dire plus et éventuellement poster le code source que tu as écrit jusqu'ici?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Par défaut
    en fait voici exactement mon problème:
    1 - dans la variable buffer je me met ce que je recoit avec recv sur mes socket
    2 - tous les données qui arrive dans buffer doivent être stocker dans une variable gloable pointé par tab.
    3 - pour ne pas alourdir le serveur, il faut que chaque fois ou je traite des éléments dans tab, je les enlève et je libère l'espace mémoire qui a été allouée pour ne pas arriver à un point où tab devient tres grand

    1 j'ai reussit à le faire,
    par contre 2 et 3, je ne sais pas comment les faire, svp, pouvez vous m'aidez et me dire comment faire ca ?? (je suis débutante en C)

    merci ,
    Sara

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    #include <stdio.h>
    #include <sys/socket.h>
    #include <arpa/inet.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <netinet/in.h>
    #define MAXPENDING 5    /* Max connection requests */
    #define BUFFSIZE 32
     
    void Die(char *mess) {perror(mess); exit(1);}
     
    void HandleClient(int sock, char *tab) {
     
    	char buffer[BUFFSIZE];
    	int i, received = -1;
    	/* Receive message */
    	if ((received = recv(sock, buffer, BUFFSIZE, 0)) < 0) {
    		Die("Failed to receive initial bytes from client");
    	}
     
    	/* Send bytes and check for more incoming data in loop */
    	while (received > 0) {
    		/* Send back received data */
    		if (send(sock, buffer, received, 0) != received) {
    			Die("Failed to send bytes to client");
    		}
    		/* Check for more data */
    		if ((received = recv(sock, buffer, BUFFSIZE, 0)) < 0) {
    			Die("Failed to receive additional bytes from client");
    		}
    		for(i=0; i < 4; i++){
    			printf("%.2x\n",buffer[i]);
    		}
    	}
    	close(sock);
    }
     
    int main(int argc, char *argv[]){
     
    	int serversock, clientsock;
    	struct sockaddr_in echoserver, echoclient;
    	char *tab;
     
    	if (argc != 2) {
    		fprintf(stderr, "USAGE: echoserver <port>\n");
                  	exit(1);
    	}
     
    	/* Create the TCP socket */
    	if ((serversock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
    		Die("Failed to create socket");
    	}
     
    	printf("Bonjour 1\n");
    	/* Construct the server sockaddr_in structure */
    	memset(&echoserver, 0, sizeof(echoserver));       /* Clear struct */
    	echoserver.sin_family = AF_INET;                  /* Internet/IP */
    	echoserver.sin_addr.s_addr = htonl(INADDR_ANY);   /* Incoming addr */
    	echoserver.sin_port = htons(atoi(argv[1]));       /* server port */
    	printf("Bonjour 2\n");
     
    	/* Bind the server socket */
    	if (bind(serversock, (struct sockaddr *) &echoserver, sizeof(echoserver)) < 0) {
    		Die("Failed to bind the server socket");
    	}
     
    	printf("Bonjour 3\n");
     
    	/* Listen on the server socket */
    	if (listen(serversock, MAXPENDING) < 0) {
    		Die("Failed to listen on server socket");
    	}
     
    	printf("Bonjour 4\n");
    	/* Run until cancelled */
    	while (1) {
    		unsigned int clientlen = sizeof(echoclient);
                  	/* Wait for client connection */
                  	if ((clientsock =
                     	accept(serversock, (struct sockaddr *) &echoclient, &clientlen)) < 0) {
                    	Die("Failed to accept client connection");
                  	}
                  	fprintf(stdout, "Client connected: %s\n", inet_ntoa(echoclient.sin_addr));
                  	HandleClient(clientsock, tab);
    	}
    }

Discussions similaires

  1. pointeurs
    Par ghost74 dans le forum C
    Réponses: 3
    Dernier message: 14/12/2002, 02h52
  2. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43
  3. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  4. djgpp et pointeurs far -2
    Par elvivo dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 29/07/2002, 22h43
  5. djgpp et pointeurs far
    Par elvivo dans le forum C
    Réponses: 2
    Dernier message: 13/07/2002, 00h44

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