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

1qa*_*sw2 11 python sockets

我有一个连接的插座.我用的时候:

print (mySocket)
Run Code Online (Sandbox Code Playgroud)

我明白了:

<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)
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试打印地址:

print(mySocket.laddr)
Run Code Online (Sandbox Code Playgroud)

我得到并且错误:

AttributeError: 'socket' object has no attribute 'laddr'
Run Code Online (Sandbox Code Playgroud)

如何打印laddrraddr属性?

Amb*_*ber 15

请尝试使用.getsockname().getpeername()方法.如Socket对象文档中所述family,只有proto,和type字段可用作属性.

>>> s.bind(('localhost',12345))
>>> s.getsockname()
('127.0.0.1', 12345)
Run Code Online (Sandbox Code Playgroud)


小智 6

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