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

标签 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)

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

编辑:我尝试了sock.getsockname(),但这会引发错误:[Errno 10022]提供了无效的参数

最佳答案

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

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

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

希望这有帮助!

关于Python - 如何获取发送方套接字的端口(UDP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47367797/

相关文章:

ruby - 通过 SO_RCVTIMEO 套接字选项在 Ruby 中设置套接字超时

python - 导入错误 : No module named auth. 凭据

python - 将数据帧向量添加到数据帧表

python - Pyramid 发送邮件 : pyramid_mailer or marrow. 邮件

node.js - native websocket api NodeJS的较大的消息?

c - UDP 数据包未传递 - recvfrom() 永远不会返回

python - 使用 python 自动化 Excel 宏

sockets - 当send()成功时,WSAWaitForMultipleEvents返回超时

java - 安卓广播地址

c++ - 两次读取 UDP 套接字会丢弃第一次调用后剩余的字节