简体   繁体   中英

How do I give twisted server an ip address?

I am trying to write a simple client/server (where client and server are not the same machine) and cannot figure out how to give twisted an ip address.

from twisted.internet import protocol, reactor, endpoints
from twisted.protocols import basic

class FingerProtocol(basic.LineReceiver):
    def lineReceived(self, user):
        self.transport.write(self.factory.getUser(user) + b"\r\n")
        self.transport.loseConnection()

class FingerFactory(protocol.ServerFactory):
    protocol = FingerProtocol

    def __init__(self, users):
        self.users = users

    def getUser(self, user):
        return self.users.get(user, b"No such user")

fingerEndpoint = endpoints.serverFromString(reactor, ("192.168.1.7", "tcp:1079"))
fingerEndpoint.listen((FingerFactory({ b'moshez' : b'Happy and well'})))
reactor.run()

error:

Traceback (most recent call last):
  File "sensors/twistedTest.003.py", line 20, in <module>
    fingerEndpoint = endpoints.serverFromString(reactor, ("192.168.1.7", "tcp:1079"))
  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/endpoints.py", line 1724, in serverFromString
    nameOrPlugin, args, kw = _parseServer(description, None)
  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/endpoints.py", line 1635, in _parseServer
    args, kw = _parse(description)
  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/endpoints.py", line 1596, in _parse
    for (type, value) in _tokenize(description):
  File "/usr/local/lib/python3.5/dist-packages/twisted/internet/endpoints.py", line 1570, in _tokenize
    current += n
TypeError: can't concat bytes to tuple

How do I give twisted/reactor an ip address?

Instead of using ("192.168.1.7", "tcp:1079") try b"tcp:1079:interface=192.168.1.7".

Like this:

fingerEndpoint = endpoints.serverFromString(reactor, b"tcp:1079:interface=192.168.1.7")

Also, address "192.168.1.7" should be the address of some of the network interfaces on the server's machine.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM