如何从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_ANY
到socket.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))