Python 2.x/3.x example code for a ``Sum`` server and client. ========================================================== Save this in to a file ``sum_server.py``:: # Server implementation for a "Sum" command which adds two integers from twisted.protocols import amp from twisted.internet import reactor from twisted.internet.protocol import Factory class Sum(amp.Command): # normally shared by client and server code arguments = [(b'a', amp.Integer()), (b'b', amp.Integer())] response = [(b'total', amp.Integer())] class Protocol(amp.AMP): @Sum.responder def sum(self, a, b): return {'total': a+b} pf = Factory() pf.protocol = Protocol reactor.listenTCP(1234, pf) # listen on port 1234 reactor.run() Save this in to a file ``sum_client.py``:: from twisted.internet import reactor from twisted.internet.protocol import ClientCreator from twisted.protocols import amp class Sum(amp.Command): # normally shared by client and server code arguments = [(b'a', amp.Integer()), (b'b', amp.Integer())] response = [(b'total', amp.Integer())] def connected(protocol): return protocol.callRemote(Sum, a=13, b=81 ).addCallback(gotResult) def gotResult(result): print('total: %d' % (result['total'],)) reactor.stop() def error(reason): print("Something went wrong") print(reason) reactor.stop() ClientCreator(reactor, amp.AMP).connectTCP( '127.0.0.1', 1234).addCallback(connected).addErrback(error) reactor.run() Open two terminal windows. In the first, type this:: python sum_server.py Then in the second, type:: python sum_client.py *The result of the addition should be printed on your screen!*