ADVERTENCIA: Este es el código de la versión alfa y no debe usarse para uso en producción.
Una biblioteca de extensión para Haxe para simplificar la configuración de conexiones cliente/servidor. Tiene soporte para lo siguiente:
Hay dos capas de transporte compatibles, TCP y UDP, que utiliza hxnet. TCP se usa comúnmente para servicios confiables como HTTP, FTP, Telnet y muchos otros. UDP no tiene conexión y se utiliza para datos rápidos y poco confiables que son útiles para juegos.
Por encima de las capas de transporte se encuentran las clases Cliente y Servidor. Estos manejan conexiones simples, transmisión/recuperación de datos y excepciones. Las clases UDP falsifican una conexión basándose en datos recibidos de diferentes direcciones IP y un valor de tiempo de espera para determinar cuándo se interrumpe una conexión.
Al crear un objeto Cliente o Servidor, debe pasarle un Protocolo. Un protocolo define las interacciones específicas entre un cliente y un servidor. Por ejemplo, puede crear un protocolo personalizado basado en RPC que llame fácilmente a una función en el servidor desde un cliente (o viceversa). Otro ejemplo de protocolo sería HTTP, que podría generar una respuesta del servidor a un navegador.
Supongamos que desea crear un servidor de eco telnet básico. Podemos hacerlo extendiendo el protocolo Telnet y anulando la función 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 función principal crea una instancia de un servidor TCP (puerto 4000) y utiliza la clase base Factory para crear una nueva instancia de Echo para cada conexión de cliente. Luego llama start
, que es un atajo para escuchar en un puerto y actualizar infinitamente.
Es posible que desee conectarse a un servidor para recuperar datos. De forma predeterminada, hxnet bloquea todas las conexiones, lo que puede ser un problema con las aplicaciones gui porque bloqueará la representación. Podemos solucionarlo estableciendo blocking
en falso.
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
Por el presente se otorga permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para operar con el Software sin restricciones, incluidos, entre otros, los derechos de uso, copia, modificación, fusión. , publicar, distribuir, sublicenciar y/o vender copias del Software, y permitir que las personas a quienes se les proporciona el Software lo hagan, sujeto a las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.