如何使用 python 从特定接口发送 igmp 加入?
How to send igmp join from specific interface with python ?
我正在尝试在 Python 中实现以下程序以从特定接口发送加入请求(现在我的内核默认选择一些内容)。
import socket
import struct
import time
MCAST_GRP = '239.0.1.1'
MCAST_PORT = 2000
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((MCAST_GRP, MCAST_PORT))
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
我试图将 socket.INADDR_ANY
更改为 socket.inet_aton('X.X.X.X')
当 X.X.X.X
是我的接口 ip 地址,用字符串表示,但我得到一个错误。
我该怎么做才能让它发挥作用?
谢谢,塔洛尔
找到答案:
需要将“4sl”更改为“4s4s”,并将我要发送 igmp 加入请求的接口表示为四字节字符串。我可以编写如下代码:
interface = '168.152.63.15'
mreq = struct.pack("4s4s", socket.inet_aton(MCAST_GRP), socket.inet_aton(interface))
我正在尝试在 Python 中实现以下程序以从特定接口发送加入请求(现在我的内核默认选择一些内容)。
import socket
import struct
import time
MCAST_GRP = '239.0.1.1'
MCAST_PORT = 2000
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind((MCAST_GRP, MCAST_PORT))
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
我试图将 socket.INADDR_ANY
更改为 socket.inet_aton('X.X.X.X')
当 X.X.X.X
是我的接口 ip 地址,用字符串表示,但我得到一个错误。
我该怎么做才能让它发挥作用?
谢谢,塔洛尔
找到答案:
需要将“4sl”更改为“4s4s”,并将我要发送 igmp 加入请求的接口表示为四字节字符串。我可以编写如下代码:
interface = '168.152.63.15'
mreq = struct.pack("4s4s", socket.inet_aton(MCAST_GRP), socket.inet_aton(interface))