def peer2str(transport: asyncio.transports.BaseTransport) -> str: # https://docs.python.org/3.9/library/asyncio-protocol.html?highlight=get_extra_info#asyncio.BaseTransport.get_extra_info # https://docs.python.org/3.9/library/socket.html#socket.socket.getpeername try: peer = transport.get_extra_info('peername') if isinstance(peer, tuple): ip_ver = 4 if len(peer) == 2 else 6 return "tcp{2}:{0}:{1}".format(peer[0], peer[1], ip_ver) elif isinstance(peer, str): return "unix:{0}".format(peer) else: return "?:{0}".format(peer) except: pass try: proc: Popen = transport.get_extra_info('subprocess') # return 'process:{}'.format(transport.pid) return 'process:{}'.format(proc.pid) except: pass try: pipe = transport.get_extra_info('pipe') return 'pipe:{}'.format(pipe) except: pass # gracefully fallback if we can't map the peer's transport return 'unknown'
def connection_made(self, transport: asyncio.transports.BaseTransport) -> None: """Callback when a connection has been established.""" sock = transport.get_extra_info("socket") if sock is not None: self._file_number = sock.fileno() self.__logger.info( "fd=%d connection established: peer=%s:%d", self._file_number, *(transport.get_extra_info("peername") or ("unknown", 0))) self._connection_transport = transport
def connection_made(self, transport: asyncio.transports.BaseTransport) -> None: self.session = self._create_session() self.session.peer = transport.get_extra_info('peername') self._reset_timeout() super().connection_made(transport) self.transport = transport log.info('Peer: %r', self.session.peer) # 处理客户请求 self._handler_coroutine = self.loop.create_task(self._handle_client())
def connection_made(self, transport: asyncio.transports.BaseTransport) -> None: self.user = transport.get_extra_info('peername')[0] + str( transport.get_extra_info('peername')[1]) Server.connections[self.user] = transport
def connection_made(self, transport: asyncio.transports.BaseTransport) -> None: peername = transport.get_extra_info('peername') print(f'connection from {peername}') self.transport = transport
def connection_made(self, transport: asyncio.transports.BaseTransport): peername = transport.get_extra_info("peername") print("Server connection made from: {}".format(peername)) self.transport = transport