Adobe Flash: Formations & Forums: [XMLSocket] Envoi et réception de données avec AquaServer - Adobe Flash: Formations & Forums

Voir le contenu

Page 1 sur 1
  • Vous ne pouvez pas créer de sujet
  • Vous ne pouvez pas répondre au sujet

[XMLSocket] Envoi et réception de données avec AquaServer Noter le sujet : -----

#1 Utilisateur non-connecté   Nanu

  • Honorisé
  • Groupe : Honoris
  • Messages : 2054
  • Inscrit : 19-July 02
  • Location:Longwy(54)
  • Interests:Sport-info

Posté 18 February 2005 - 01:40 AM

Auteur : Nanu (Quentin Emmanuel)
Mail : nanu518[at]hotmail.com
URL : http://www.inlabs.net
Date de création : 17/02/2005
img:coupe
:arrow: Lancement du serveur :
Dans le fichier zip que vous trouverez ci-joint, il y a deux dossiers, nous nous interresserons pour le moment à celui nommé 'serveur'.
AquaServer est un serveur socket très basique qui se contente de renvoyer à tous les clients ce qu'il reçoit.

:arrow: Comment lancer le serveur :
Il suffit out simplement de cliquer sur lance.bat (attention on ne peut pas lancer deux serveurs en même temps sur le même port)
Remarque, vous pouvez éditer le fichier .bat avec notepad par exemple pour changer le port sur lequel le serveur doit écouter (1024 par défaut);
QUOTE
Pour mac (by ali_o_kan : ali_o_kan@get-url.net) :
--> Ouvrir le Terminal (Application --> utilitaire --> Terminal)
--> Tapper \"cd\" + un espace + puis glisser le dossier aqua sur le terminal + \"enter\"
--> Tapper \"java AquaServer 1024\" + \"enter\"

img:coupe
Une fois le serveur lancé, nous pouvons nous interresser à la partie cliente qui se situe dans le dossier client qui contient 2 fichiers :
:arrow: ConnexionHandler.as
:arrow: sampleSocket.fla

Interressons nous à la classe ConnexionHandler qui gére la connexion, l'envoi et la réception de données :
:arrow: Pour se connecter au serveur :
CODE


// On définit l'objet XMLSocket qui va permettre d'envoyer et de recevoir

 // les données

 _connexion = new XMLSocket();

 

 // On définit l'événement qui va se déclancher lorsque nous seront connectés:

 //ciblage:

 var parent:ConnexionHandler = this;

 _connexion.onConnect = function(bSuccess:Boolean):Void {

  parent.onClientConnect(bSuccess);

 };

 // On définit l'événement qui va se déclancher lorsqu'on reçoit une donnée :

 _connexion.onData = function(data:String) {

                     var doc:XML = new XML();

                     doc.ignoreWhite = true;

                     doc.parseXML(data);

                     parent.onReceiveXml(doc);

               };

 // Ensuite on se connecte au serveur :

 // Ici on prend les arguments de la fonction initialize

 _connexion.connect(sHost, nPort);


Ici sHost est le serveur sur lequel on va se connecter (ici : localhost)
nPort est le port sur lequel le serveur écoute.
ATTENTION Si vous êtes en local vous devez mettre "localhost" ou "127.0.0.1" comme hôte. Si vous devez déployer votre serveur sur le net, indiquer l'adresse ip ou le domaine du serveur sur lequel se trouve le serveur.

:arrow: Pour envoyer un xml rien de plus simple :
CODE
_connexion.send(xData);


:arrow: On le reçoit comme ceci :
CODE


private function onReceiveXml(xXml:XML):Void {  

    _stage.tMsgs.htmlText += xXml.firstChild.firstChild+"<br>";

}


img:coupe
ATTENTION AquaServer ne renvoit pas parfaitement l'xml qu'il a reçu, il rajoute des blancs. Pour les retirer on utilise une petite fonction qui permet d'obtenir juste l'xml sans les blancs :
CODE


// Fonction permettant d'obtenir l'xml en retirant les espaces qu'envoie aquaServer :

_connexion.onData = function(data:String) {

  var doc:XML = new XML();

  doc.ignoreWhite = true;

  doc.parseXML(data);

  parent.onReceiveXml(doc);

};

Fichier(s) joint(s)

  • Fichier joint  aqua.zip (0octets)
    Nombre de téléchargements: 986

0

#2 Utilisateur non-connecté   GoldenMike

  • Ceinture Jaune
  • Groupe : Membres
  • Messages : 39
  • Inscrit : 30-December 08

Posté 25 January 2009 - 08:43 PM

Salut !
j'ai un groooos probleme :
je te donne l'image ( j'ouvre dans le zip lance.bat , et il s'ouvre 1 quart de seconde et j'ai vite fait un printecran ) >

IMAGE : http://sd-1.archive-...uaserverbug.bmp
// Une petite visite pour moi : http://www.cukiergames.wikeo.be
0

#3 Utilisateur non-connecté   popov130

  • Ceinture Jaune
  • Groupe : Membres
  • Messages : 44
  • Inscrit : 19-February 09

Posté 26 March 2009 - 06:06 PM

Salut,

Je suis en train de tester tout ça, le source java ça n'aurait pas été du luxe icon_wink.gif
Ca fait bien 10 ans que j'ai pas codé dans ce langage.
Voici un code qui compile, en revanche à l'exec c'est pas encore ça (je vous tiens au courant) :

Action Script


import java.net.ServerSocket;

class main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
ServerSocket ses = new ServerSocket(1222);
while(true){
new Client(ses.accept());
}
}catch(Exception e){
e.printStackTrace();
}
}

}


Action Script


import java.lang.Thread;
import java.net.Socket;
import java.io.*;

public class Client extends Thread {
private Thread _t;
private BufferedReader _in;
private PrintWriter _out;

public Client(Socket s){
try{
_in = new BufferedReader(new InputStreamReader(s.getInputStream()));
_out = new PrintWriter(s.getOutputStream());
_t = new Thread(this);
_t.start();
}catch(Exception e){
e.printStackTrace();
}
}

public void run(){
try{
String sReceived = "";
char [] tab = new char[1];
while(_in.read(tab,0,1) != -1){
sReceived += tab[0];
if(tab[0] == '\u0000'){
sendMsg(sReceived);
sReceived ="";
}
}
}catch(Exception e){
e.printStackTrace();
}
}

public void sendMsg (String sMsg) throws Exception{
_out.write(sMsg);
_out.flush();
}
}

0

Page 1 sur 1
  • Vous ne pouvez pas créer de sujet
  • Vous ne pouvez pas répondre au sujet

2 utilisateur(s) dans ce sujet
0 membre(s), 2 invité(s), 0 utilisateur(s) anonyme(s)