如何打印已连接套接字的本地和远程地址和端口?

时间:2016-12-20 20:32:05

标签: python sockets

我有一个连接套接字。当我使用时:

print (mySocket)

我明白了:

<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)>

我也可以成功打印:

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

但如果我尝试打印地址:

print(mySocket.laddr)

我得到并且错误:

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

如何打印 laddr raddr 属性?

2 个答案:

答案 0 :(得分:10)

请尝试使用.getsockname().getpeername()方法。如上所述in the Socket object docs,只有familyprototype字段可用作属性。

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

答案 1 :(得分:2)

laddr使用mySocket.getsockname()使用raddr使用mySocket.getpeername()