File tree Expand file tree Collapse file tree 2 files changed +63
-0
lines changed
Expand file tree Collapse file tree 2 files changed +63
-0
lines changed Original file line number Diff line number Diff line change 1+ import asyncio
2+
3+ from asyncio import StreamReader , StreamWriter
4+ from asyncio .trsock import TransportSocket
5+ from typing import cast
6+
7+ async def handle_echo (reader : StreamReader , writer : StreamWriter ) -> None :
8+ data = await reader .read (100 )
9+ message = data .decode ()
10+ addr = writer .get_extra_info ('peername' )
11+
12+ print (f"Received { message !r} from { addr !r} " )
13+
14+ print (f"Send: { message !r} " )
15+ writer .write (data )
16+ await writer .drain ()
17+
18+ print ("Close the connection" )
19+ writer .close ()
20+
21+ async def main () -> None :
22+ server = await asyncio .start_server (
23+ handle_echo , '127.0.0.1' , 8888 )
24+
25+ # tag::CAST[]
26+ socket_list = cast (tuple [TransportSocket , ...], server .sockets )
27+ addr = socket_list [0 ].getsockname ()
28+ # end::CAST[]
29+ print (f'Serving on { addr } ' )
30+
31+ async with server :
32+ await server .serve_forever ()
33+
34+ asyncio .run (main ())
Original file line number Diff line number Diff line change 1+ import asyncio
2+
3+ from asyncio import StreamReader , StreamWriter
4+
5+ async def handle_echo (reader : StreamReader , writer : StreamWriter ) -> None :
6+ data = await reader .read (100 )
7+ message = data .decode ()
8+ addr = writer .get_extra_info ('peername' )
9+
10+ print (f"Received { message !r} from { addr !r} " )
11+
12+ print (f"Send: { message !r} " )
13+ writer .write (data )
14+ await writer .drain ()
15+
16+ print ("Close the connection" )
17+ writer .close ()
18+
19+ async def main () -> None :
20+ server = await asyncio .start_server (
21+ handle_echo , '127.0.0.1' , 8888 )
22+
23+ addr = server .sockets [0 ].getsockname ()
24+ print (f'Serving on { addr } ' )
25+
26+ async with server :
27+ await server .serve_forever ()
28+
29+ asyncio .run (main ())
You can’t perform that action at this time.
0 commit comments