如何使用 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))