[英]Python - How to get port of sender socket (UDP)
If I have a UDP socket like so: 如果我有这样的UDP套接字:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
and the socket can send data: 套接字可以发送数据:
sock.sendto("message", address)
How do I find out the port of the socket - the port used when sending data to address
? 我如何找出套接字的端口-将数据发送到
address
时使用的端口?
EDIT: I tried sock.getsockname()
but this raises an error: [Errno 10022] An invalid argument was supplied
编辑:我尝试了
sock.getsockname()
但这会引发错误: [Errno 10022] An invalid argument was supplied
I'm not too familiar with the python socket class, but based on what I've read here https://docs.python.org/2/library/socket.html#socket.getnameinfo perhaps socket.getnameinfo()[1]
might work 我对python套接字类不太熟悉,但基于我在这里阅读的内容https://docs.python.org/2/library/socket.html#socket.getnameinfo也许
socket.getnameinfo()[1]
可能有效
since .getsockname() returns a 2-tuple (host, port) 由于.getsockname()返回2元组(主机,端口)
The socket must be bound before you can use .getsockname()
by doing sock.bind(('', 0))
. 必须先绑定套接字,然后才能通过执行
sock.bind(('', 0))
使用.getsockname()
sock.bind(('', 0))
。
Hope this helps! 希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.