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.