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

时间:2017-11-18 15:35:21

标签: python sockets udp

如果我有这样的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

1 个答案:

答案 0 :(得分:2)

我对python socket类不太熟悉,但是基于我在这里阅读的内容https://docs.python.org/2/library/socket.html#socket.getnameinfo 也许 socket.getnameinfo()[1]可能有效

因为.getsockname()返回一个2元组(主机,端口)

必须先绑定套接字,然后才能.getsockname()使用sock.bind(('', 0))

希望这有帮助!