【问题标题】:Python - How to get port of sender socket (UDP)Python - 如何获取发送方套接字的端口(UDP)
【发布时间】:2017-11-19 01:08:54
【问题描述】:

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

【问题讨论】:

    标签: python sockets udp


    【解决方案1】:

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

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

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

    希望这会有所帮助!

    【讨论】:

    • 您实际上只是使用.getsockname 来获取元组计数主机,套接字绑定的端口。
    • 好的。我做了相应的修改。感谢您的信息!
    • .getsockname() 会引发错误,可能是因为我没有将它绑定到端口,而是让它自己为我找到一个端口。
    • 啊,我明白了。然后你需要先绑定到端口0,然后你应该可以使用getsockname
    • 能否请您或@JoelLee 本人修改答案以反映这一成功?我们需要一些你可以接受的东西:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    • 2014-02-06
    • 2010-12-30
    • 1970-01-01
    相关资源
    最近更新 更多