[Twisted-Python] Newbie Problem
Damon Kohler
damonkohler at yahoo.com
Tue Sep 12 22:11:30 MDT 2006
This is probably something simple. I'm having some trouble with this little bit
of code below. I start it up once as a server, then a second time as the client
connecting to localhost. However, it never actually seems to connect. Both
sides just wait indefinitely. I'm a bit stuck as to how to debug this, so if
someone has a solution for me and could tell me how I would have figured it
out, that would be great!
Thanks,
Damon
import sys
import optparse
import zope.interface
from twisted.spread import pb
from twisted.internet import reactor
from twisted.internet import interfaces
from twisted.python import util
class ConsoleInput(object):
zope.interface.implements(interfaces.IReadDescriptor)
def fileno(self):
return 0
def connectionLost(self, reason):
print "Lost connection because %s" % reason
def doRead(self):
d = self.root.callRemote("echo", sys.stdin.readline().strip())
def setRoot(self, root):
print "got root"
self.myEchoer = Echoer()
self.root = root
self.root.callRemote('GiveReference', self.myEchoer)
def logPrefix(self):
return 'ConsoleInput'
class Echoer(pb.Root):
def remote_echo(self, st):
print 'echoing:', st
return st
def remote_GiveReference(self, ref):
self.client_ref = ref
def main():
parser = optparse.OptionParser()
parser.add_option('--host', dest='host', help='Host to connect to.')
options, args = parser.parse_args()
ci = ConsoleInput()
reactor.addReader(ci)
if options.host:
host = options.host
factory = pb.PBClientFactory()
print "Connecting to %s..." % host
reactor.connectTCP(host, 8789, pb.PBClientFactory())
d = factory.getRootObject()
d.addCallback(ci.setRoot)
d.addErrback(lambda reason: "error %s" % reason.value)
d.addCallback(util.println)
else:
print "Listening..."
root = Echoer()
factory = pb.PBServerFactory(root)
reactor.listenTCP(8789, factory)
reactor.run()
if __name__ == '__main__':
main()
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
More information about the Twisted-Python
mailing list