警告:这是 alpha 版本代码,不应用于生产用途。
Haxe 的扩展库,用于简化客户端/服务器连接的设置。它支持以下内容:
hxnet 使用两个受支持的传输层:TCP 和 UDP。 TCP 通常用于可靠的服务,例如 HTTP、FTP、Telnet 等。 UDP 是无连接的,用于快速传输对游戏有用的不可靠数据。
传输层之上是客户端类和服务器类。它们处理简单的连接、数据传输/检索和异常。 UDP 类根据从不同 IP 地址接收的数据和超时值来伪造连接,以确定连接何时断开。
创建客户端或服务器对象时,您需要向其传递协议。协议定义了客户端和服务器之间的特定交互。例如,您可以创建基于自定义 RPC 的协议,该协议可以轻松地从客户端调用服务器上的函数(反之亦然)。协议的另一个示例是 HTTP,它可以生成从服务器到浏览器的回复。
假设您想要创建一个基本的 telnet echo 服务器。我们可以通过扩展 Telnet 协议并重写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 ();
}
}
main 函数创建一个 TCP 服务器实例(端口 4000),并使用 Factory 基类为每个客户端连接创建一个新的 Echo 实例。然后它调用start
,这是监听端口并无限更新的快捷方式。
您可能想要连接到服务器以检索数据。默认情况下,hxnet 会阻止所有连接,这可能会导致 gui 应用程序出现问题,因为它会锁定渲染。我们可以通过将blocking
设置为 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
}
}
}
版权所有 (C) 2013-2014 马特·塔特尔
特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地使用本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售软件的副本,并允许向其提供软件的人员这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有者均不对因本软件或本软件中的使用或其他交易而产生或与之相关的任何索赔、损害或其他责任负责,无论是合同、侵权行为还是其他行为。软件。