2017-04-06 29 views
0

我想在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

回答

0

找到了答案: 需要改變「4SL」到「4s4s」,並表示我要發送IGMP加入請求作爲四字節字符串的接口。我可以編寫代碼如下:
interface = '168.152.63.15' mreq = struct.pack("4s4s", socket.inet_aton(MCAST_GRP), socket.inet_aton(interface))

相關問題