আমরা XML-RPC প্রোটোকল ব্যবহার করে আমাদের নিজস্ব ক্রস-প্ল্যাটফর্ম, ভাষা-স্বাধীন সার্ভার তৈরি করতে পারি। আমরা SimpleXMLRPCServer উদাহরণ তৈরি করতে SimpleXMLRPCServer ব্যবহার করি এবং আগত অনুরোধগুলি শুনতে বলি। পরবর্তীতে আমরা পরিষেবার অংশ হতে কিছু ফাংশন সংজ্ঞায়িত করি এবং সেই ফাংশনগুলিকে নিবন্ধন করি যাতে সার্ভার এটিকে কীভাবে কল করতে হয় তা জানে৷
সার্ভার চালানো
নীচের উদাহরণে আমরা SimpleXMLRPCServer ইনস্ট্যান্স ব্যবহার করে একটি সার্ভার তৈরি করি এবং কিছু পূর্ব-সংজ্ঞায়িত পাশাপাশি কাস্টম ফাংশন নিবন্ধন করি। অবশেষে, আমরা সার্ভারটিকে একটি অসীম লুপের মধ্যে রেখেছি যাতে অনুরোধগুলি গ্রহণ করা হয় এবং তাতে সাড়া দেওয়া হয়৷
উদাহরণ
from xmlrpc.server import SimpleXMLRPCServer from xmlrpc.server import SimpleXMLRPCRequestHandler class RequestHandler(SimpleXMLRPCRequestHandler): rpc_paths = ('/RPC2',) with SimpleXMLRPCServer(('localhost', 9000), requestHandler=RequestHandler) as server: server.register_introspection_functions() # Register len() function; server.register_function(len) # Register a function under a different name @server.register_function(name='rmndr') def remainder_function(x, y): return x // y # Register a function under function.__name__. @server.register_function def modl(x, y): return x % y server.serve_forever()
উপরের সার্ভারটি চালু হয়ে গেলে, এটি একটি ক্লায়েন্ট প্রোগ্রাম দ্বারা কল করা যেতে পারে যা ফাংশনগুলি উল্লেখ করতে পারে এবং ফাংশন কল করতে পারে৷
ক্লায়েন্ট চালানো
উদাহরণ
import xmlrpc.client s = xmlrpc.client.ServerProxy('https://localhost:9000') print(s.len("Tutorialspoint")) print(s.rmndr(12,5)) print(s.modl(7,3)) # Print list of available methods print(s.system.listMethods())
আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -
14 2 1 ['len', 'modl', 'rmndr', 'system.listMethods', 'system.methodHelp', 'system.methodSignature']