Python - 如何获取发送方套接字的端口 (UDP)

5
如果我有一个像这样的UDP套接字:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

同时,套接字可以发送数据:

sock.sendto("message", address)

如何查找套接字的端口-发送数据到地址时使用的端口是什么?

编辑:我尝试了sock.getsockname(),但出现错误:[Errno 10022] An invalid argument was supplied

1个回答

6
我对Python的socket类不太熟悉,但根据我在此处读到的信息https://docs.python.org/2/library/socket.html#socket.getnameinfo,也许 socket.getnameinfo() [1] 可能起作用。
由于 .getsockname() 返回一个 2-tuple(host、port),因此必须在使用之前绑定套接字,方法是执行 sock.bind(('',0))
希望这可以帮助你!

1
你可以通过使用.getsockname方法获取一个元组,其中包含套接字绑定的主机和端口。 - Marcus Müller
好的,我已经做出了修改。感谢提供信息! - Joel Lee
.getsockname() 抛出了一个错误,可能是因为我没有将它绑定到一个端口,而是让它自己找一个端口。 - David Callanan
@MarcusMüller 很好,看起来可以了,谢谢! - David Callanan
1
你能否或者请@JoelLee本人修改答案以反映这个成功呢?我们需要一些你可以接受的东西 :) - Marcus Müller
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接