简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM