تحذير: هذا هو رمز إصدار ألفا ولا ينبغي استخدامه للاستخدام الإنتاجي.
مكتبة ملحقة لـ Haxe لتبسيط إعداد اتصالات العميل/الخادم. لديه دعم لما يلي:
توجد طبقتان للنقل مدعومتان، TCP وUDP، يستخدمهما hxnet. يُستخدم 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 ();
}
}
تقوم الوظيفة الرئيسية بإنشاء مثيل لخادم TCP (المنفذ 4000) وتستخدم فئة Factory الأساسية لإنشاء مثيل جديد لـ Echo لكل اتصال عميل. ثم يستدعي start
وهو اختصار للاستماع على المنفذ والتحديث بلا حدود.
قد ترغب في الاتصال بالخادم لاسترداد البيانات. بشكل افتراضي، يقوم hxnet بحظر جميع الاتصالات، مما قد يمثل مشكلة مع تطبيقات واجهة المستخدم الرسومية لأنه سيؤدي إلى قفل العرض. يمكننا إصلاح ذلك عن طريق ضبط blocking
على خطأ.
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 مات تاتل
يُمنح الإذن مجانًا لأي شخص يحصل على نسخة من هذا البرنامج وملفات الوثائق المرتبطة به ("البرنامج")، للتعامل في البرنامج دون قيود، بما في ذلك، على سبيل المثال لا الحصر، حقوق الاستخدام والنسخ والتعديل والدمج. ونشر و/أو توزيع وترخيص من الباطن و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق الطبع والنشر أعلاه وإشعار الإذن هذا في جميع النسخ أو الأجزاء الكبيرة من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريحًا أو ضمنيًا، بما في ذلك، على سبيل المثال لا الحصر، ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. لا يتحمل المؤلفون أو أصحاب حقوق الطبع والنشر بأي حال من الأحوال المسؤولية عن أي مطالبة أو أضرار أو مسؤولية أخرى، سواء في إجراء العقد أو الضرر أو غير ذلك، الناشئة عن أو خارج أو فيما يتعلق بالبرنامج أو الاستخدام أو المعاملات الأخرى في برمجة.