समस्या विवरण
पायथन के xmlrpc.server और xmlrpc.client मॉड्यूल का उपयोग करके क्रॉस-प्लेटफॉर्म, भाषा-स्वतंत्र RPC सर्वर और क्लाइंट बनाएं।
सर्वर साइड
from xmlrpc.server import SimpleXMLRPCServer
from xmlrpc.server import SimpleXMLRPCRequestHandler
class RequestHandler(SimpleXMLRPCRequestHandler):
rpc_paths = ('/RPC2',)
with SimpleXMLRPCServer(('localhost', 9000), requestHandler=RequestHandler) as server:
# इंट्रोस्पेक्शन फंक्शन रजिस्टर करें (system.listMethods आदि)
server.register_introspection_functions()
# बिल्ट-इन len फंक्शन रजिस्टर करें
server.register_function(len)
# कस्टम फंक्शन रजिस्टर करें (अलग नाम से)
@server.register_function(name='rmndr')
def remainder_function(x, y):
return x // y
# कस्टम फंक्शन रजिस्टर करें (मूल नाम से)
@server.register_function
def modl(x, y):
return x % y
print("सर्वर पोर्ट 9000 पर चल रहा है...")
server.serve_forever()
क्लाइंट साइड
import xmlrpc.client
# सर्वर प्रॉक्सी बनाएं
proxy = xmlrpc.client.ServerProxy('https://localhost:9000')
# रिमोट फंक्शन कॉल करें
print("len('Tutorialspoint'):", proxy.len("Tutorialspoint"))
print("rmndr(12, 5):", proxy.rmndr(12, 5))
print("modl(7, 3):", proxy.modl(7, 3))
# उपलब्ध विधियां सूचीबद्ध करें
print("उपलब्ध विधियां:", proxy.system.listMethods())
आउटपुट
len('Tutorialspoint'): 14
rmndr(12, 5): 2
modl(7, 3): 1
उपलब्ध विधियां: ['len', 'modl', 'rmndr', 'system.listMethods', 'system.methodHelp', 'system.methodSignature']
मुख्य बिंदु
- XML-RPC HTTP पर XML का उपयोग करके रिमोट प्रोसीजर कॉल सक्षम करता है।
register_introspection_functions()से स्वचालित दस्तावेज़ीकरण मिलता है।- डेटा प्रकार: बुनियादी पायथन प्रकार (int, str, list, dict, bool, datetime) स्वचालित रूप से सीरियलाइज़ होते हैं।
- उत्पादन के लिए सुरक्षा (SSL, प्रमाणीकरण) जोड़ें।