lwzm
11/8/2014 - 8:57 AM

usage: udpsvd 0 1024 ./io.py

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