ВНИМАНИЕ: это код альфа-версии, и его не следует использовать в производственных целях.
Библиотека расширений для Haxe для упрощения настройки соединений клиент/сервер. Он поддерживает следующее:
hxnet использует два поддерживаемых транспортных уровня: TCP и UDP. TCP обычно используется для надежных сервисов, таких как HTTP, FTP, Telnet и многих других. UDP не требует установления соединения и используется для быстрой передачи ненадежных данных, которые полезны для игр.
Над транспортными уровнями располагаются классы Клиент и Сервер. Они обрабатывают простые соединения, передачу/извлечение данных и исключения. Классы UDP имитируют соединение на основе данных, полученных с разных IP-адресов, и значения тайм-аута, чтобы определить момент разрыва соединения.
При создании объекта «Клиент» или «Сервер» вам необходимо передать ему протокол. Протокол определяет конкретные взаимодействия между клиентом и сервером. Например, вы можете создать собственный протокол на основе RPC, который легко вызывает функцию на сервере из клиента (или наоборот). Другим примером протокола может быть HTTP, который может генерировать ответ от сервера браузеру.
Допустим, вы хотите создать базовый эхо-сервер Telnet. Мы можем сделать это, расширив протокол 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 блокирует все соединения, что может стать проблемой для приложений с графическим интерфейсом, поскольку блокирует рендеринг. Мы можем это исправить, установив для 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 Мэтт Таттл
Настоящим бесплатно любому лицу, получившему копию этого программного обеспечения и связанных с ним файлов документации («Программное обеспечение»), предоставляется разрешение на работу с Программным обеспечением без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение. публиковать, распространять, сублицензировать и/или продавать копии Программного обеспечения, а также разрешать лицам, которым предоставлено Программное обеспечение, делать это при соблюдении следующих условий:
Вышеупомянутое уведомление об авторских правах и данное уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. АВТОРЫ ИЛИ ОБЛАДАТЕЛИ АВТОРСКИХ ПРАВ НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ В ДЕЙСТВИЯХ ПО КОНТРАКТУ, ПРАВОНАРУШЕНИЮ ИЛИ ДРУГИМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ОТ, ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ СДЕЛКАМИ, ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ.