نظرة عامة
يمكن بدء تشغيل العملاء مباشرة بواسطة router عندما يتم إدراجهم في ملف clients.config . قد يكون هؤلاء العملاء “مُدارين” أو “غير مُدارين”. يتم التعامل مع هذا بواسطة ClientAppManager. بالإضافة إلى ذلك، قد يقوم العملاء المُدارون أو غير المُدارين بالتسجيل لدى ClientAppManager حتى يتمكن العملاء الآخرون من الحصول على مرجع إليهم. هناك أيضاً مرفق Port Mapper بسيط للعملاء لتسجيل منفذ داخلي يمكن للعملاء الآخرين البحث عنه.
العملاء المُدارون
اعتباراً من الإصدار 0.9.4، يدعم الـ router العملاء المُدارين. يتم إنشاء العملاء المُدارين وتشغيلهم بواسطة ClientAppManager. يحافظ ClientAppManager على مرجع للعميل ويتلقى تحديثات حول حالة العميل. العملاء المُدارون مفضلون، حيث أنه من الأسهل بكثير تنفيذ تتبع الحالة وتشغيل وإيقاف العميل. كما أنه من الأسهل بكثير تجنب المراجع الثابتة في كود العميل والتي قد تؤدي إلى استخدام مفرط للذاكرة بعد إيقاف العميل. يمكن تشغيل وإيقاف العملاء المُدارين من قبل المستخدم في وحدة تحكم الـ router، ويتم إيقافهم عند إغلاق الـ router.
العملاء المُدارون ينفذون إما واجهة net.i2p.app.ClientApp أو واجهة net.i2p.router.app.RouterApp. العملاء الذين ينفذون واجهة ClientApp يجب أن يوفروا المنشئ التالي:
public MyClientApp(I2PAppContext context, ClientAppManager listener, String[] args)
العملاء الذين يطبقون واجهة RouterApp يجب أن يوفروا الباني التالي:
public MyClientApp(RouterContext context, ClientAppManager listener, String[] args)
الوسائط المقدمة محددة في ملف clients.config.
العملاء غير المُدارين
إذا كانت الفئة الرئيسية المحددة في ملف clients.config لا تنفذ واجهة مُدارة، فسيتم تشغيلها باستخدام main() مع المعاملات المحددة، وإيقافها باستخدام main() مع المعاملات المحددة. لا يحتفظ الـ router بمرجع، نظراً لأن جميع التفاعلات تتم عبر الطريقة الثابتة main(). لا تستطيع وحدة التحكم توفير معلومات حالة دقيقة للمستخدم.
العملاء المسجلون
يمكن للعملاء، سواء كانوا مُدارين أو غير مُدارين، التسجيل مع ClientAppManager بحيث يمكن للعملاء الآخرين الحصول على مرجع إليهم. التسجيل يتم بالاسم. العملاء المسجلون المعروفون هم:
console, i2ptunnel, Jetty, outproxy, update
مُخطط المنافذ
يوفر الـ router أيضاً آلية بسيطة للعملاء للعثور على خدمة مقبس داخلي، مثل HTTP proxy. يتم توفير هذا من خلال Port Mapper. التسجيل يتم بالاسم. العملاء الذين يسجلون عادة ما يوفرون مقبس محاكي داخلي على ذلك المنفذ.