如何从python的特定界面发送igmp连接?

问题描述:

我想在Python中实现下面的程序来发送来自特定接口的加入请求(现在我的内核正在选择默认的东西)。如何从python的特定界面发送igmp连接?

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_ANYsocket.inet_aton('X.X.X.X')X.X.X.X是我的接口的IP地址由一个字符串表示的,但我得到了一个错误。

任何方式我可以做些什么来使它工作?

感谢,Talor

找到了答案: 需要改变“4SL”到“4s4s”,并表示我要发送IGMP加入请求作为四字节字符串的接口。我可以编写代码如下:
interface = '168.152.63.15' mreq = struct.pack("4s4s", socket.inet_aton(MCAST_GRP), socket.inet_aton(interface))