web-dev-qa-db-fra.com

Comment imprimer l'adresse et le port local et distant d'un socket connecté?

J'ai une prise connectée. Quand j'utilise:

print (mySocket)

J'ai compris:

<socket.socket fd=376, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.31.244', 4160), raddr=('192.168.31.244', 7061)>

Je peux également imprimer avec succès:

print (mySocket.family)
print (mySocket.proto)

Mais si j'essaie d'imprimer l'adresse:

print(mySocket.laddr)

Je reçois et erreur:

AttributeError: 'socket' object has no attribute 'laddr'

Comment imprimer les attributs laddr et raddr?

12
1qazxsw2

Essayez d'utiliser les méthodes .getsockname() et .getpeername() à la place. Comme indiqué dans la documentation de l'objet Socket seuls les champs family, proto et type sont disponibles en tant qu'attributs.

>>> s.bind(('localhost',12345))
>>> s.getsockname()
('127.0.0.1', 12345)
14
Amber

Pour laddr utilisez mySocket.getsockname() et pour raddr utilisez mySocket.getpeername()

4
kmtomile