
602
|
第 18 章 非同步的替代方案
import asyncio
class EchoServer(asyncio.Protocol):
def connection_made(self, transport):
self.transport = transport
self.peer = transport.get_extra_info('peername')
print('Connected from', self.peer)
def connection_lost(self, exc):
print('Disconnected from', self.peer)
def data_received(self, data):
print('Recv:', data.decode())
self.transport.write(data)
print('Echo:', data.decode())
loop = asyncio.get_event_loop()
echo = loop.create_server(EchoServer, 'localhost', 8881)
server = loop.run_until_complete(echo)
print('Serving at', server.sockets[0].getsockname())
loop.run_forever()
這個伺服器並沒有限制它一次可以服務多少客戶端,而其傳輸能處理任何
網路資料切割方式(network ...