如果我有这样的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)
如何找出套接字的端口 - 将数据发送到address
时使用的端口?
编辑:我尝试sock.getsockname()
,但这会引发错误:[Errno 10022] An invalid argument was supplied
答案 0 :(得分:2)
我对python socket类不太熟悉,但是基于我在这里阅读的内容https://docs.python.org/2/library/socket.html#socket.getnameinfo
也许
socket.getnameinfo()[1]
可能有效
因为.getsockname()返回一个2元组(主机,端口)
必须先绑定套接字,然后才能.getsockname()
使用sock.bind(('', 0))
。
希望这有帮助!