[socket en perl] ecouter un port sur son pc

ecouter un port sur son pc [socket en perl] - Perl - Programmation

Marsh Posté le 18-12-2005 à 15:35:37    

Bonjour à toutes et tous
 

Code :
  1. use IO::Socket;
  2. $socket= IO::Socket::INET->new
  3. (
  4. PeerAddr => 'localhost',
  5. PeerPort => 4672,
  6. Proto    => "UDP",
  7. Type     => SOCK_STREAM
  8. )or die "impossible d'ouvrir le port.\n";
  9. $answer=<$socket>;
  10. print $answer;


 
je ne sais pas pourquoi mais quelque soit la configuration (port et url) mon programme me sort "impossible d'ouvrir le port" et mon  firewall ne reagit meme pas (il ne doit donc pas etre sollicité).

Message cité 1 fois
Message édité par matthieu5978 le 18-12-2005 à 15:36:52
Reply

Marsh Posté le 18-12-2005 à 15:35:37   

Reply

Marsh Posté le 18-12-2005 à 17:04:15    

pour une socket udp c'est SOCK_DGRAM

Reply

Marsh Posté le 18-12-2005 à 17:19:08    

djtoz a écrit :

pour une socket udp c'est SOCK_DGRAM


 
j'ai remplacé par SOCK_DGRAM mais ca ne change rien :/
 
merci quand même


Message édité par matthieu5978 le 18-12-2005 à 17:19:58
Reply

Marsh Posté le 18-12-2005 à 18:53:55    

ton port est pas deja en ecoute ?

Reply

Marsh Posté le 19-12-2005 à 09:13:27    

djtoz a écrit :

ton port est pas deja en ecoute ?


 
Nan je pense pas mais j'ai essayé plusieurs ports comme le 21 (je n'ai pas de serveur ftp) et d'autres pris au hasard et j'ai le meme message.  

Reply

Marsh Posté le 19-12-2005 à 12:42:06    

djtoz tu avais raison j'ai essayé en mettant comme url : http://www.telecharger.com et 80 comme port et la en effet la connexion s'etablie. Une question: je ne peux donc pas ecouter mes propres ports avec cette methode?

Reply

Marsh Posté le 19-12-2005 à 14:00:05    

matthieu5978 a écrit :

djtoz tu avais raison j'ai essayé en mettant comme url : http://www.telecharger.com et 80 comme port et la en effet la connexion s'etablie. Une question: je ne peux donc pas ecouter mes propres ports avec cette methode?


 
qu'est ce que tu entends par ecouter mes propres ports ?
tu veut te connecter sur un port qui est en ecoute sur ta machine ?

Reply

Marsh Posté le 19-12-2005 à 15:27:00    

justement pour pouvoir te connecter à ce port il faudrait que tu l'ecoute!
 
si tu fait un autre socket avec un listen sur ce port (et donc plutot le tout en TCP) ca marchera. Et tu aura la joie de pouvoir communiquer avec toi meme. Donne nous de tes nouvelles quand tu en aura

Reply

Marsh Posté le 20-12-2005 à 15:05:15    

matthieu5978 a écrit :

Bonjour à toutes et tous
 

Code :
  1. use IO::Socket;
  2. $socket= IO::Socket::INET->new
  3. (
  4. PeerAddr => 'localhost',
  5. PeerPort => 4672,
  6. Proto    => "UDP",
  7. Type     => SOCK_STREAM
  8. )or die "impossible d'ouvrir le port.\n";
  9. $answer=<$socket>;
  10. print $answer;


 
je ne sais pas pourquoi mais quelque soit la configuration (port et url) mon programme me sort "impossible d'ouvrir le port" et mon  firewall ne reagit meme pas (il ne doit donc pas etre sollicité).


 
 
Salut,
 Le fond de ton probleme c'est surtout les parametres que tu mets pour IO::Socket::INET. Client ou Server ? Si tu utilise les mots clefs "Peer", tu fais un client. Si tu utilise les mots clefs Local, tu fais un serveur (je shematise, c'est pas vrai du tout :non:). En perl, tout est fait pour etre simple : Pas besoin d'en rajouter pour faire "cool". :sol:
 
Server.pl :

Code :
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use IO::Socket::INET;
  4. my $sock = IO::Socket::INET->new(LocalPort  => 4672,
  5.     Proto     => 'udp'
  6.    )
  7.                                         or die "Can't bind : $@\n";
  8. print "server up\n";
  9. while (<$sock> ) {
  10.   print;
  11. }


Client.pl :

Code :
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use IO::Socket::INET;
  4. my $sock = IO::Socket::INET->new(PeerPort  => 4672,
  5.                                             PeerAddr  => 'localhost',
  6.                                             Proto     => 'udp',
  7.    )
  8.                                         or die "Can't bind : $@\n";
  9. while (<> ) {
  10.   $sock->send($_);
  11. }



---------------
Cdl, Danjer
Reply

Marsh Posté le 04-01-2006 à 12:27:30    

merci à tous

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed