Bonjour,

J'ai un serveur en Perl fait maison dont voila le source:

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
#!/usr/bin/perl
use Socket;
$ENV{'PATH'} = '/bin:/usr/bin';
delete @ENV{ 'IFS', 'CDPATH', 'ENV','BASH_ENV'};
 
$utilisateur        = "nobody";
$this_host          = "*";
$port               = 1026;
$server_addr        = (gethostbyname($this_host))[4];
$server_struct      = pack("S n a4 x8", AF_INET, $port, $server_addr);
$proto              = (getprotobyname("tcp"))[2];
socket( SOCK, PF_INET, SOCK_STREAM, $proto ) || die "Impossible d'initialiser la socket: $!\n";
setsockopt( SOCK, SOL_SOCKET, SO_REUSEADDR,1 ) || die "setsockopt() foire: $!\n";
bind( SOCK, $server_struct ) || die "bind foire: $!\n";
listen( SOCK, SOMAXCONN ) || die "listen foire: $!\n";
unless ($uid = (getpwnam($utilisateur))[2])
{
   die "Tentative de lancer le serveur en tant qu'utilisateur inexistant ou supperutilisateur\n";
}
print "UID: $uid\n";
 
for ( ;; )
{
   $remote_host = accept( NEWSOCK, SOCK );
   die "accept() erreur: $!\n" unless ($remote_host);
   $raw_addr = ( unpack( "S n a4 x8", $remote_host ) )[2];
   @octets = unpack( "C4", $raw_addr );
   $adresse = join( ".", @octets );
   print "Connexion de: $adresse\n";
   print NEWSOCK "toto";
   print "Termine\n";
   close(NEWSOCK);
}
En fait c'est un serveur tout simple, qui renvoi "toto" a chaque connexion. Ca marche en faisant telnet 192.168.0.4 1026

J'essai de faire un client en flash qui fait la meme chose, j'ai donc un bouton et un testfield ( texte ).

Voici mon script:
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
var socket = new XMLSocket();
socket.onConnect = connexion;
socket.onData = reception;
socket.onClose = deconnexion;
 
function connexion(isOk)
{
	if(isOk) // la connection s'est bien déroulée
		texte.text += "OK Connexion\n";
	else
		texte.text += "Echec de la connexion !\n";
}
 
function deconnection()
{
	texte.text += "connection terminee.\n";
}
 
function reception(chaine)
{
	texte.text += "["+chaine.toString()+"]\n";
}
 
bouton.onRelease = function() {
	texte.text="tentative de connexion\n";
	socket.connect( "192.168.0.4", 1026 );
}
La connexion se fait bien, mais le fonction reception n'est jamais appelé, donc il n'imprime pas le toto. De plus, bien que mon script ferme la connexion, la fonction deconnection n'est pas appelé non plus.

J'utilise la version d'evaluation de flash professionnel 8. C'est la premiere fois que je fais du flash...

Avez-vous des idées ?
Merci par avance.