Skip to content

Instantly share code, notes, and snippets.

@a9QrX3Lu
Created March 5, 2021 08:19
Show Gist options
  • Select an option

  • Save a9QrX3Lu/b88163b89e3c40e401523616b9e11888 to your computer and use it in GitHub Desktop.

Select an option

Save a9QrX3Lu/b88163b89e3c40e401523616b9e11888 to your computer and use it in GitHub Desktop.
simple tcpreplay implementation
import sys
import asyncio
async def handle_echo(reader, writer):
while True:
message = await reader.read(1000)
print(f'get message {message}')
writer.write(message)
await writer.drain()
async def main():
server = await asyncio.start_server(handle_echo, '127.0.0.1', sys.argv[1])
addr = server.sockets[0].getsockname()
print(f'Serving on {addr}')
async with server:
await server.serve_forever()
asyncio.run(main())
import asyncio
async def handle_echo(reader, writer):
r1, w1 = await asyncio.open_connection('127.0.0.1', 8889)
_, w2 = await asyncio.open_connection('127.0.0.1', 8890)
while True:
data = await reader.read(1000)
w1.write(data)
w2.write(data)
print(f'proxy {data} to servers')
await w1.drain()
await w2.drain()
print(f'proxy response to client')
writer.write(await r1.read(1000))
await writer.drain()
writer.close()
async def main():
server = await asyncio.start_server(handle_echo, '127.0.0.1', 8888)
addr = server.sockets[0].getsockname()
print(f'Serving on {addr}')
async with server:
await server.serve_forever()
asyncio.run(main())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment