Example 2: echo server, using a StreamServerΒΆ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# Gruvi example program: echo server, using StreamServer

import gruvi

def echo_handler(stream, transport, protocol):
    peer = transport.get_extra_info('peername')
    print('New connection from {0}'.format(gruvi.saddr(peer)))
    while True:
        buf = stream.read1()
        if not buf:
            break
        stream.write(buf)
    print('Connection lost')

server = gruvi.StreamServer(echo_handler)
server.listen(('localhost', 0))
for addr in server.addresses:
    print('Listen on {0}'.format(gruvi.saddr(addr)))

server.run()