2017-04-06 10 views
0

私はPythonで次のプログラムを実装しようとしていますが、特定のインターフェイスから参加要求を送信しようとしています(現在、私のカーネルはデフォルトで何かを選択しています)。特定のインターフェイスからPythonでigmp joinを送信するにはどうすればいいですか?

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) 

私はX.X.X.Xは私のインターフェイスのIPアドレスが文字列で表すときsocket.INADDR_ANY socket.inet_aton('X.X.X.X')にを変更しようとしていたが、私はエラーを得ました。

どうすればいいですか?

おかげで、テイロール

答えて

0

は答えを見つけた: は「4s4s」に「4SL」に変更し、私は、IGMPは4バイトの文字列としてリクエストに参加送信するインターフェイスを表現する必要があります。私は次のようにコードを書くことができます:
interface = '168.152.63.15' mreq = struct.pack("4s4s", socket.inet_aton(MCAST_GRP), socket.inet_aton(interface))

関連する問題