mirror of
https://github.com/esp8266/Arduino.git
synced 2025-04-22 21:23:07 +03:00
50 lines
1.2 KiB
Python
Executable File
50 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import asyncio
|
|
|
|
# 512 bytes
|
|
message = bytearray(512);
|
|
bufsize=len(message)
|
|
print('message len=', bufsize)
|
|
|
|
global recv
|
|
recv = 0
|
|
|
|
async def tcp_echo_open (ip, port):
|
|
return await asyncio.open_connection(ip, port)
|
|
|
|
async def tcp_echo_sender(message, writer):
|
|
print('Writer started')
|
|
while True:
|
|
writer.write(message)
|
|
await writer.drain()
|
|
|
|
async def tcp_echo_receiver(message, reader):
|
|
global recv
|
|
print('Reader started')
|
|
while True:
|
|
data = ''.encode('utf8')
|
|
while len(data) < bufsize:
|
|
data += await reader.read(bufsize - len(data))
|
|
recv += len(data);
|
|
if data != message:
|
|
print('error')
|
|
|
|
async def tcp_stat():
|
|
global recv
|
|
dur = 0
|
|
loopsec = 2
|
|
while True:
|
|
last = recv
|
|
await asyncio.sleep(loopsec) # drifting
|
|
dur += loopsec
|
|
print('BW=', (recv - last) * 2 * 8 / 1024 / loopsec, 'Kibits/s avg=', recv * 2 * 8 / 1024 / dur)
|
|
|
|
loop = asyncio.get_event_loop()
|
|
reader, writer = loop.run_until_complete(tcp_echo_open('echo23.local', 23))
|
|
loop.create_task(tcp_echo_receiver(message, reader))
|
|
loop.create_task(tcp_echo_sender(message, writer))
|
|
loop.create_task(tcp_stat())
|
|
loop.run_forever()
|