usage: udpsvd 0 1024 ./io.py
#!/usr/bin/env python3
import datetime
import select
import datetime
import select
import sys
import time
def loop():
read = sys.stdin.buffer.read1
write = sys.stdout.buffer.write
flush = sys.stdout.buffer.flush
rlist = [sys.stdin.buffer]
empty = []
n = 0
t = int(time.time())
while True:
todo, _, _ = select.select(rlist, empty, empty, max(t - time.time(), 0))
#print(todo)
if todo:
n += 1
s = read(4096)
if s == b'!':
raise Exception
#print(repr(s), file=sys.stderr)
write(s)
flush()
else:
print("idle for statistic {} {} {}".format(
datetime.datetime.now(), t, n), file=sys.stderr)
n = 0
t += 1
try:
loop()
finally:
sys.stdin.close() # UDP required
# busybox udpsvd -v 0 1024 ./io.py