add tcp test-client too
This commit is contained in:
parent
f225fded53
commit
82c175a02e
49
client.py
Normal file
49
client.py
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
from twisted.internet import endpoints
|
||||||
|
from twisted.internet.defer import (
|
||||||
|
Deferred,
|
||||||
|
)
|
||||||
|
from twisted.internet.task import react
|
||||||
|
from twisted.internet.error import (
|
||||||
|
ConnectionDone,
|
||||||
|
)
|
||||||
|
from twisted.internet.protocol import (
|
||||||
|
Protocol,
|
||||||
|
Factory,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RelayEchoClient(Protocol):
|
||||||
|
"""
|
||||||
|
Speaks the version1 magic wormhole transit relay protocol (as a client)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def connectionMade(self):
|
||||||
|
print(">CONNECT")
|
||||||
|
self.data = b""
|
||||||
|
self.transport.write(u"please relay {}\n".format(self.factory.token).encode("ascii"))
|
||||||
|
|
||||||
|
def dataReceived(self, data):
|
||||||
|
print(">RECV {} bytes".format(len(data)))
|
||||||
|
print(data.decode("ascii"))
|
||||||
|
self.data += data
|
||||||
|
if data == "ok\n":
|
||||||
|
self.transport.write("ding\n")
|
||||||
|
|
||||||
|
def connectionLost(self, reason):
|
||||||
|
if isinstance(reason.value, ConnectionDone):
|
||||||
|
self.factory.done.callback(None)
|
||||||
|
else:
|
||||||
|
print(">DISCONNCT: {}".format(reason))
|
||||||
|
self.factory.done.callback(reason)
|
||||||
|
|
||||||
|
|
||||||
|
@react
|
||||||
|
def main(reactor):
|
||||||
|
ep = endpoints.clientFromString(reactor, "tcp:localhost:4001")
|
||||||
|
f = Factory.forProtocol(RelayEchoClient)
|
||||||
|
f.token = "a" * 64
|
||||||
|
f.done = Deferred()
|
||||||
|
ep.connect(f)
|
||||||
|
return f.done
|
Loading…
Reference in New Issue
Block a user