AVERTISSEMENT : il s'agit d'un code de version alpha et ne doit pas être utilisé à des fins de production.
Une bibliothèque d'extensions pour Haxe pour simplifier la configuration des connexions client/serveur. Il prend en charge les éléments suivants :
Il existe deux couches de transport prises en charge, TCP et UDP, utilisées par hxnet. TCP est couramment utilisé pour des services fiables tels que HTTP, FTP, Telnet et une multitude d'autres. UDP est sans connexion et utilisé pour des données rapides et peu fiables, utiles pour les jeux.
Au-dessus des couches de transport se trouvent les classes Client et Serveur. Ceux-ci gèrent les connexions simples, la transmission/récupération de données et les exceptions. Les classes UDP simulent une connexion basée sur les données reçues de différentes adresses IP et une valeur de délai d'attente pour déterminer quand une connexion est interrompue.
Lors de la création d'un objet Client ou Serveur, vous devez lui transmettre un protocole. Un protocole définit les interactions spécifiques entre un client et un serveur. Par exemple, vous pouvez créer un protocole personnalisé basé sur RPC qui appelle facilement une fonction sur le serveur à partir d'un client (ou vice versa). Un autre exemple de protocole serait HTTP, qui pourrait générer une réponse du serveur vers un navigateur.
Disons que vous souhaitez créer un serveur d'écho telnet de base. Nous pouvons le faire en étendant le protocole Telnet et en remplaçant la fonction lineReceived
.
class Echo extends hxnet.protocols. Telnet
{
override private function lineReceived ( line : String )
{
writeLine ( line );
}
static public function main ()
{
var server = new hxnet.tcp. Server ( new hxnet.base. Factory ( Echo ), 4000 );
server . start ();
}
}
La fonction principale crée une instance d'un serveur TCP (port 4000) et utilise la classe de base Factory pour créer une nouvelle instance d'Echo pour chaque connexion client. Ensuite, il appelle start
qui est un raccourci pour écouter sur un port et mettre à jour à l'infini.
Vous souhaiterez peut-être vous connecter à un serveur pour récupérer des données. Par défaut, hxnet bloque toutes les connexions, ce qui peut poser problème avec les applications graphiques car cela bloquera le rendu. Nous pouvons résoudre ce problème en définissant blocking
sur false.
class Client extends hxnet.protocols. Telnet
{
override private function lineReceived ( line : String )
{
trace ( line );
}
static public function main ()
{
var client = new hxnet.tcp. Client ();
client . protocol = new Client (); // set the protocol we want to use
client . connect ( " localhost " , 4000 );
client . blocking = false ; // important for gui clients
while ( true )
{
client . update ();
// add application logic here
}
}
}
Copyright (C) 2013-2014 Matt Tuttle
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « TEL QUEL », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.