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

Modules Perl Discussion :

[IO::Socket::Inet]quelle addresse IP a envoyé le message


Sujet :

Modules Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut [IO::Socket::Inet]quelle addresse IP a envoyé le message
    Bonjour à tous !!

    Je voudrais savoir de quelle ip provient le mesage envoyé sur une socket.

    Voilà le script de mon serveur:

    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
     
    ...
     
    sub StartServer()
    {
     
          Balloon('vous pouvez recevoir des messages','Serveur demarré','INFO','10');
          $socket = new IO::Socket::INET (
                        LocalPort => 5004 ,
                        Proto => 'tcp' ,
                        Listen => 5 ,
                        Reuse => 1
                  ) ;
     
          $socket -> autoflush ( 1 ) ;
     
          while ( $nouvelle_socket = $socket -> accept ( ) ) 
          {
     
     
                $Code_message=<$nouvelle_socket>;
                chomp($Code_message);
                my @tab=split(/~/,$Code_message);
     
                my $sender_name=&GetVar($tab[1]);
                if($sender_name ne "")
                {
                      $tab[1]=$sender_name;
                }
     
                if(length($tab[0])>10)
                {
                      Balloon(substr($tab[0],0,10)."...","$peer t\'a ecrit",'10');      
                }
                else
                {
                      Balloon("$tab[0]","$peer t\'a ecrit\: ",'10');
                }
     
                &AlertMessage($tab[0],$tab[1]);
          }
     
    }
     
     
    ...
    Et mon client:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $socket = new IO::Socket::INET (
                        PeerHost => $destinataire ,
                        PeerPort => 5004 ,
                        Proto => 'tcp' ,
                        ) ;
     
     
    print $socket "$message~$ARGV[0]\n" ;
    $socket -> flush ( ) ;
     
    close ( $socket ) ;
    Je voudrais pouvoir récupérer dans le scrtip serveur l'addresse ip de clui qui a écrit sur le socket afin de l'afficher dans mon MsgBox.

    Est-ce possible ????


    Merci pour vos réponses !!

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Par défaut
    Ok ,j'ai trouvé !

    On peut récupérer, le port, nom de pc, domaine et addresse ip comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while ( $nouvelle_socket = $socket -> accept ( ) ) 
          {
     
                $peer=getpeername($nouvelle_socket);
                ($port, $iaddr) = sockaddr_in($peer);
                $herhostname    = gethostbyaddr($iaddr, AF_INET);
                $herstraddr     = inet_ntoa($iaddr);
           # PORT: $port
           # addresse ip: $herstraddr
           # nom_pc/domain: $herhostname
           }
    C'est puissant perl quand même

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

Discussions similaires

  1. Taille de la file d'attente pour IO::Socket::INET
    Par lucho31 dans le forum Programmation et administration système
    Réponses: 7
    Dernier message: 23/07/2007, 15h56
  2. [Sockets UDP] Quelle est la taille max d'un message UDP en unicast?
    Par jlassiramzy dans le forum Entrée/Sortie
    Réponses: 30
    Dernier message: 27/02/2007, 09h24
  3. [MySQL] Sous quelle forme dois-je envoyer la date vers BDD ?
    Par Death83 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 22/12/2005, 09h15
  4. [reseaux] IO::Socket::Inet et transferts de fichiers
    Par jp_sympa dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 20/05/2005, 11h30

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