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