XML socket
# XML socket

XMLSocket est un protocole implémenté par le langage ActionScript qui permet à une animation Adobe Flash de communiquer au-dessus de TCP grâce à des Sockets. Il permet le transfert de données textuelles brutes (texte) ou hiérarchiques (XML, xHTML). Il est souvent utilisé dans des applications de chat et de jeux multijoueurs.

Le protocole est le suivant :

* des messages XML sont envoyés en full duplex grâce à une connexion TCP/IP utilisant les sockets ;
* chaque message XML est un document XML terminé par des bits de zéro ;
* une quantité illimitée de messages XML peuvent être envoyés et reçus au sein d'une seule connexion.

## Client Flash

Flash a été la première technologie à proposer le protocole XMLSocket du côté client.

### ActionScript 2.0

Le code pour afficher un Hello world en ActionScript 2.0 est le suivant :

Le socket utilise le port 8463 sur la machine locale et le mode echo est actif.

### ActionScript 3.0

Ci-dessous exemple d'une connexion xmlSocket en ActionScript 3.0 :

## Client Silverlight

Silverlight supporte l'utilisation des sockets dans son espace de nom System.Net.Sockets. Le protocole est asynchrone et utilise le port 4502 à 4534. La communication peut avoir lieu entre un client et plusieurs serveurs (cross-domain socket) à condition qu'un fichier définisse les règles de sécurité sur le serveur primaire.

### Silverlight 1.1 et 2.0

Silverlight utilise un format basé sur du XML pour contrôler l’accès aux ressources par domaines interposés. En plus, Silverlight supporte aussi le format Adobe Flash régissant les accès inter-domaines. Silverlight 2 à partir de la bêta 1 ajoute aussi un support pour les communications réseaux, utilisant les sockets à travers IPv4 et IPv6. Silverlight 2.0 supporte aussi la programmation asynchrone, par l’utilisation des bibliothèques de « threading ». Cependant, les sockets Silverlight sont plus restrictives. Elles peuvent communiquer uniquement avec l’hôte qui a lancé l’application au départ, et les numéros de port sont restreints du numéro 4502 à 4532. Les prochaines versions pallieront ce problème. Les sockets Silverlight peuvent uniquement initier une connexion, elles ne peuvent être en attente.

