mirror of
https://github.com/esp8266/Arduino.git
synced 2025-07-27 18:02:17 +03:00
Stream::send() (#6979)
This commit is contained in:
49
libraries/ESP8266WiFi/examples/WiFiEcho/echo-client.py
Executable file
49
libraries/ESP8266WiFi/examples/WiFiEcho/echo-client.py
Executable file
@ -0,0 +1,49 @@
|
||||
#!/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()
|
Reference in New Issue
Block a user