WARNUNG: Dies ist der Alpha-Versionscode und sollte nicht für Produktionszwecke verwendet werden.
Eine Erweiterungsbibliothek für Haxe zur Vereinfachung der Einrichtung von Client/Server-Verbindungen. Es unterstützt Folgendes:
Es gibt zwei unterstützte Transportschichten, TCP und UDP, die hxnet verwendet. TCP wird häufig für zuverlässige Dienste wie HTTP, FTP, Telnet und viele andere verwendet. UDP ist verbindungslos und wird für schnelle, unzuverlässige Daten verwendet, die für Spiele nützlich sind.
Über den Transportschichten liegen die Klassen Client und Server. Diese behandeln einfache Verbindungen, Datenübertragung/-abruf und Ausnahmen. Die UDP-Klassen fälschen eine Verbindung basierend auf den von verschiedenen IP-Adressen empfangenen Daten und einem Timeout-Wert, um zu bestimmen, wann eine Verbindung getrennt wird.
Wenn Sie ein Client- oder Serverobjekt erstellen, müssen Sie ihm ein Protokoll übergeben. Ein Protokoll definiert die spezifischen Interaktionen zwischen einem Client und einem Server. Sie können beispielsweise ein benutzerdefiniertes RPC-basiertes Protokoll erstellen, das problemlos Funktionen auf dem Server von einem Client aus aufruft (oder umgekehrt). Ein weiteres Beispiel für ein Protokoll wäre HTTP, das eine Antwort vom Server an einen Browser generieren könnte.
Nehmen wir an, Sie möchten einen einfachen Telnet-Echo-Server erstellen. Wir können dies tun, indem wir das Telnet-Protokoll erweitern und die lineReceived
-Funktion überschreiben.
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 ();
}
}
Die Hauptfunktion erstellt eine Instanz eines TCP-Servers (Port 4000) und verwendet die Basisklasse Factory, um für jede Clientverbindung eine neue Instanz von Echo zu erstellen. Dann ruft es start
, eine Abkürzung zum Abhören eines Ports und zum unbegrenzten Aktualisieren.
Möglicherweise möchten Sie eine Verbindung zu einem Server herstellen, um Daten abzurufen. Standardmäßig blockiert hxnet alle Verbindungen, was bei GUI-Anwendungen ein Problem darstellen kann, da dadurch das Rendering blockiert wird. Wir können das beheben, indem wir blocking
auf „false“ setzen.
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
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-INHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS unerlaubter Handlung ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.