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

C Discussion :

Comment print le buffer du socket read !


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Comment print le buffer du socket read !
    http://www.bestproxydb.com/pscan_checker.c

    Voici la source de mon programme,
    je n'arrive pas a printer le buffer du socket read ...
    est-ce que quelqu'un serais me guider svp ?


    le code exact ce trouve entre les
    /*

    */

    Voici le message d'erreur


    [user@web autoscript]$ gcc -o checker -I/usr/include/mysql -I/usr/local/include -L/usr/local/lib -fno-strength-reduce pscan_checker.c $(mysql_config --libs)
    [bproxydb@web autoscript]$ ./checker
    2861
    0 58.4.97.165:80
    1 173.2.3.253:8085
    2 173.88.243.195:8085
    3 98.214.0.233:8085
    4 98.240.179.178:8085
    5 67.82.141.235:8085
    ./checker: Segmentation fault
    [user@web autoscript]$

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Est-ce que tu as alloué de la mémoire pour connlist[i].buffer ?
    Je n'ai pas vu de malloc, du coup tu tentes d'écrire à l'emplacement 0x0 et segfault !
    Pourquoi tu utilises read ? Tu peux utiliser recv
    Plus tu pédales moins fort, moins t'avances plus vite.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Je ne savais pas
    j'ai mis en haut par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    struct conn_t {
        int s;
        int n;
        int port;
        char status;
        char *buffer;
        time_t a;
        struct sockaddr_in addr;
    };
    struct conn_t connlist[MAX_SOCKETS];

    il me manque quelque chose ?

  4. #4
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Tu déclares buffer en tant que pointeur. Oui mais pointeur sur quoi ?
    Comme tu as fait un memset, buffer pointe sur 0x0.
    Pour pouvoir utiliser comme tu le souhaite ce pointeur il te faut utiliser malloc, et une fois que tu as fini de t'en servir tu libères avec free.
    Ou alors tout simplement tu déclares ta structure comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    struct conn_t {
    	int s;
    	int n;
    	int port;
    	char status;
    	char buffer[255];
    	time_t a;
    	struct sockaddr_in addr;
    };
    
    struct conn_t connlist[MAX_SOCKETS];
    J'ai mis 255 parce que c'est la taille de ce que tu essayes de lire
    Plus tu pédales moins fort, moins t'avances plus vite.

Discussions similaires

  1. Comment effacer le buffer dans TCOMPORT
    Par hitmman dans le forum C++Builder
    Réponses: 0
    Dernier message: 13/07/2008, 15h53
  2. Socket (read / write)
    Par exhortae dans le forum Réseau
    Réponses: 7
    Dernier message: 31/05/2008, 16h04
  3. Comment transmettre un tableau par socket
    Par vodevil dans le forum Programmation et administration système
    Réponses: 11
    Dernier message: 08/04/2006, 14h19
  4. [vb.net] Comment vider un buffer ?
    Par mdc dans le forum Windows Forms
    Réponses: 4
    Dernier message: 16/12/2003, 15h43

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