كيفية تعريض العميل_ADDRESS إلى جميع الأساليب، باستخدام XMLRPCLIB؟
سؤال
أقوم بإنشاء Little Simplexmlrpcserver للتحقق من IP للعميل.
أحاول هذا:
الخادم
استيراد xmlrpclib.
من Simplexmlrpcserver استيراد Simplexmlrpcserver
خادم = simplexmlrpcserver (("localhost"، 8000)
Def MyP (): إرجاع "IP الخاص بك هو:٪ s"٪ server.socket.getpeername ()
server.register_function (MyP)
server.serve_forever ()
عميل
استيراد xmlrpclib.
SE = xmlrpclib.server ("http: // localhost: 8000")
طباعة se.myip ()
خطأ
xmlrpclib.fault :: (107، "نقطة النهاية النقل غير متصلة") ">
كيف تجعل العميل_address مرئيا لجميع الوظائف؟
المحلول
إذا كنت تريد على سبيل المثال لتمرير client_address
كحجة الأولى لكل وظيفة، يمكنك تصنيف SPALESCLASS SPALESSXMLRPCREQESHESTHEDHANDERLER (تمرير الفئة الفرعية الخاصة بك كمعالج عند إنشاء مثيل بسيط pressxmlrpcserver) وتجاوز _dispatch
(لإعداد self.client_address
إلى Params Tuple ثم تفويض الباقي SimpleXMLRPCRequestHandler._dispatch
). إذا كان هذا النهج موافق وتريد أن ترى التعليمات البرمجية، اسأل فقط!
لست متأكدا من كيفية استخدام أي شيء بأمان سوى حجج الوظيفة " client_address
مرئي "- لا يوجد client_address
كاسم عاري، عالمي أو غير ذلك، هناك فقط self.client_address
من كل حالة من فئة معالج الطلب (ومخالفات مثل نسخها إلى متغيرات عالمية هل حقا يوكي بالفعل - وغير آمنة تحت خيوط، إلخ، إلخ).