i2plib/docs/examples/ping_pong_test.py

51 lines
2.4 KiB
Python

import asyncio
import logging
import i2plib
BUFFER_SIZE = 65536
PK_B64 = "5pJLIgm7KCqk-d0As66OdeMRj4moqtD97wOluQh5SXWCbeMfp7cr8cgHU~5rrcN6V~QcIJuqjDpYWojBdjYrc7fAA3iwWpN4fzI05yvE48oOOOLqBq7SvkpyzIhjc0hv81XQIu0LWzXXS~-B61wurJhte-LisF571BzefV5xoaRN8y3A0RidaJyuzVufPP4cKY5NeSsmTY36QRl54PG7iWJSXnLROROlg6qsjoeIV9lyNFY6ZsQKTQzEIInCZaARmNfoJP-MAsOMoj-CRDU2MXhYT~DKdI-rWH579A3wuoEjmlHtHyms7xvwUkb6kIx5UJHZmzF2Hyv3xVrpu0HSkZfUIbzz1lAc4IZ-8jnBjt2RIRpYMNnwZW09HjJXQDd7K-QvpxpK-cqNJcmWehGP7OxLt9Jj6h~8aUFHIJtFI77Zmp~YGf7cO9vCZexeLn7iByqDtfhzTP62IPu0~MJafA4efU83A-DXo8PJhOhl7rYRzH7bWRzB1rhBI~w~TsVOBQAEAAcAAL0me7gfS2H-OZ3FAsPtbUFCFpTcvfLAzBmNxxYU5TflB4KcxNe2isp2UjM7YLCuZg6OCaBSEnoag-ABpJPkY0WIjkqbFzOlowH2oVwevFHrZCFwvf1XVXsyWdupACHmmRHFCHKHMKzolO3Cye0RMH0wIEyMRyIszSThft~keXWyuEwBM4Vros-OKrKN-mBrHNbzQzTiGLS0dVMzdPvG6Pq4t1~wCWqAXrO8n7xU-xQECEpl053Ml5AJyUaCoVj3xqCd4nbrH2~kLmvd9r2nnd-Ig19BFHNALadSYbcH9JEdJZPY~7c505W1xhsrM2PcNnE4hm8DF4R~AddaILD7b2d1l~kehRZpUKdCL~THPTM20kTyN2PFqghIA4Ng-tVmXw=="
DEST_B32 = "bxwnysaa2nwykldz4ekz6u243x5ctqlcot5acmzj2huylvwr7eyq.b32.i2p"
async def ping_pong(sam_address, loop):
_, server_session_writer = await i2plib.create_session("ppserver",
sam_address=sam_address, loop=loop, private_key=PK_B64)
server_reader, server_writer = await i2plib.stream_accept("ppserver",
sam_address=sam_address, loop=loop)
_, client_session_writer = await i2plib.create_session("ppclient",
sam_address=sam_address, loop=loop)
client_reader, client_writer = await i2plib.stream_connect("ppclient",
DEST_B32, sam_address=sam_address, loop=loop)
client_writer.write(b"PING")
incoming = await server_reader.read(BUFFER_SIZE)
dest, request = incoming.split(b"\n", 1)
remote_destination = i2plib.Destination(dest.decode())
if not request:
request = await server_reader.read(BUFFER_SIZE)
assert request == b"PING"
server_writer.write(b"PONG")
response = await client_reader.read(BUFFER_SIZE)
assert response == b"PONG"
client_writer.close()
server_writer.close()
server_session_writer.close()
client_session_writer.close()
await asyncio.sleep(0.0001) # wait until all tasks are completed
if __name__ == "__main__":
sam_address = i2plib.get_sam_address()
logging.basicConfig(level=logging.DEBUG)
loop = asyncio.get_event_loop()
loop.set_debug(True)
loop.run_until_complete(ping_pong(sam_address, loop))
loop.stop()
loop.close()