Bonjour,
J'avais mis au point une procédure de communication entre deux programmes qui fonctionnait très bien sur beaucoup de plateformes (divers Windows, divers Solaris, divers Linux, divers BSD), mais depuis que j'ai mis à jour ma Fedora (v5 vers v6), ça ne fonctionne plus.
J'ai extrait deux petits scripts qui mettent en évidence le problème. Le premier est un serveur à lancer dans un shell, le second un client à lancer ensuite dans un autre shell:
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 #!/usr/local/bin/perl -w use IO::Socket; $server1 = IO::Socket::INET->new( LocalPort => 2000, Type => SOCK_STREAM, Reuse => 1, Listen => 5 ) or die "\nCreation du serveur sur port 2000 impossible.\n"; print "\nSERVEUR SUR PORT 2000: OK\n"; $client_blabla = $server1->accept(); print $client_blabla "MESSAGE DU SERVEUR VERS LA SOCKET\n\n\n"; $ligne = <$client_blabla>; print "MESSAGE De LA SOCKET REÇU PAR LE SERVEUR = $ligne\n";
Lorsqu'ils communiquent correctement, des messages sont écrits dans le deux shells.
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 #!/usr/local/bin/perl use IO::Socket; $socket1 = IO::Socket::INET->new( Type => SOCK_STREAM, PeerAddr => "localhost", Proto => "tcp", PeerPort => 2000 ) or die "Cannot open socket on port 2000.\n"; print $socket1 "Message de la socket vers le serveur\n\n\n"; # Réponse de <server1> $ligne = <$socket1>; print "Message du serveur reçu par la socket = $ligne\n
J'ai vérifié que les modules Perl-IO-socket-INET6 et Perl-IO-socket-SSL sont bien installés.
La seule différence entre avant et maintenant, c'est à priori l'utilisation de Perl 5.8.8 alors que les autres essais ont été réalisés avec un e version plus ancienne.
Pourquoi ça coince avec Fedora/Perl 5.8.8 ? si quelqu'un a une idée, merci.
Partager