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

Langage Perl Discussion :

taille en octets d'un buffer


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Par défaut taille en octets d'un buffer
    Salut tout le monde.

    Voilà j'ai un petite soucis. j'aimerais connaitre la taille en Octet d'un buffer.
    Pour les tableau on peut connaitre sa taille (nombre de case avec $#nom_du_tableau). mais pour connaitre la taille en octet d'un buffer... je ne vois pas.

    Le programme sera en fait une appli client serveur. Et moi je suis du coté client. Mon client fait un traitement sur les informations envoyée par le server. Et je dois attendre 512 octets de données avant de commencer mon traitement. Donc....quand je mets tout ce que je reçois dans un buffer, il faut que je sache quand il fait 512octets.

    Donc si vous avez des idées je suis preneur .

    Merci d'avance.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    length

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Par défaut
    ok... simple et efficace. je pensais que ca passait pas pour les buffers.

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Janvier 2007
    Messages : 273
    Par défaut
    Pour mon appli l'idée du length est bien.. sauf que mon client n'a pas l'air d'être très au point.

    Tant qu'il n'y a pas \n dans le message du server, mon client ne fait absolument rien...
    il se contente de heu comme dire.... mettre dans une pile et quand le server se déco, le client réagi enfin... je capte pas pourquoi.

    Voilà le code .

    Server :
    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
     
     
    #!/usr/bin/perl
    use strict;use warnings;
    use IO::Socket;
     
    my $serveur = IO::Socket::INET->new(LocalPort => 30001,
                                        Type      => SOCK_STREAM,
                                        Reuse     => 1,
                                        Listen    => 10)
    or die "Impossible serveur tcp sur le port 10000 : $@\n";
     
    my $var_bidon ="A";
    while (my $client = $serveur->accept()) {
     
      next if my $pid = fork;
      #close($serveur);
      print "*** Debut de connexion ***\n";
      my $const=1;
      while($const==1){
     
      print $client $var_bidon;
        print $var_bidon;
      }
     
        #exit;
     
    }
     
    $SIG{CHLD} = 'IGNORE';
    client :
    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
     
    #!/usr/bin/perl
    use strict;use warnings;
    use IO::Socket;
    use DBI;
     
    sub connect_bdd(){
     
    	my $dbh = DBI->connect("dbi:Oracle:host=localhost;sid=XE",
    							'MAXIME','123456', {RaiseError => 1, AutoCommit => 1})
    							or die "Can't connect to database $DBI::errstr\n";
     
    	return $dbh;
     
    }
     
    sub exec_requete(){
     
    	my $dbh=$_[0];
    	my $id=$_[1];
    	my $name=$_[2];
    	chomp($name);
     
    	my $req=$dbh->prepare("insert into employe (no_emp,name) values($id,'$name')");
    	$req->execute;
     
    }
     
    sub disconnect_bdd(){
     
    $_[0]->disconnect;
     
    }
     
    my $socket = IO::Socket::INET->new(Proto    => "tcp",
                                       PeerAddr => "127.0.0.1",
                                       PeerPort => 30001)
    or die "Failed : $@\n";
     
    my $dbh=connect_bdd();
    print "*** Debut de connexion ***\n";
    my$i=0;
    my $reponse;
    while($reponse=<$socket>){
     
      if(length($reponse)==512){
      &exec_requete($dbh,$i,$reponse);
      #my $message =<STDIN>;
      #print $socket "ajz\n";
      $i++;
      }
    }
     
    &disconnect_bdd($dbh);
    print "*** Fin de connexion ***\n";
    __END__
    si vous avez des idées je suis preneur. merci

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Par défaut
    J'ai regardé un peu, et c'est sur que ça ne roule pas. D'abord, tu ne rentres jamais dans ta boucle
    parce que le résultat n'est connu que quand un retour à la ligne est envoyé.
    Du coup, le système devient absurde, même si on décide d'envoyer un "\n" depuis le serveur. Car si le nombre de caractère est supérieur à 512, tu ne rentre pas dans ton if.

    C'est bizarre comme conception. Pourquoi c'est fait comme ça ? Après tout, tu peux facilement faire un système où le serveur envoie 512 caractères et un retour chariot, et le client se contente d'éxécuter on exec_requete quand il reçoit ce qu'il faut ?

Discussions similaires

  1. Taille en octet du contenu d'un Tlistbox
    Par Coussati dans le forum Langage
    Réponses: 2
    Dernier message: 14/03/2009, 23h24
  2. Taille en octets des objets
    Par podfez dans le forum Modélisation
    Réponses: 2
    Dernier message: 22/05/2008, 14h18
  3. Est-il possible de connaitre la taille en octet d'un enregistre ?
    Par berceker united dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/03/2008, 13h22
  4. Compression COMP taille en octets
    Par ptit.homm dans le forum Cobol
    Réponses: 19
    Dernier message: 09/02/2008, 23h32
  5. [ImageMagick] Taille en octet d'une image
    Par Oberown dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/08/2006, 09h32

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