【问题标题】:Determine hostname of client in asyncio socket server在异步套接字服务器中确定客户端的主机名
【发布时间】:2019-12-02 14:43:40
【问题描述】:

看起来有一种方法可以使用socket.getpeername() 获取普通旧套接字的标识符。但是,使用asyncio.start_server 时似乎没有任何方法可以访问套接字。有没有办法为异步套接字服务器获取客户端的唯一标识符(例如 IP 地址)?

async def client_handler(reader: StreamReader, writer: StreamWriter):
    print("Client connected at {some_ip_address_or_identifier}")  # ?

async def main():
    IP = "0.0.0.0"
    PORT = 8080
    loop = asyncio.get_event_loop()
    server = await asyncio.start_server(client_handler, IP, PORT)
    await server.serve_forever()

asyncio.run(main())

【问题讨论】:

  • mm.. 你检查过这里的例子吗? docs.python.org/3/library/asyncio-stream.html。看起来你可以做 writer.get_extra_info('peername') 来获取地址,还是我错了?
  • @ranifisch 啊,谢谢,我不知道StreamWriter 有这个。

标签: python python-asyncio


【解决方案1】:

你可以这样做:

addr =  writer.get_extra_info('peername')

根据docs

【讨论】:

  • 不,这几乎没有给你任何东西......!
猜你喜欢
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 2018-06-30
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
相关资源
最近更新 更多