0

我正在尝试在 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)

我试图将我的接口 IP 地址更改socket.INADDR_ANY为何socket.inet_aton('X.X.X.X')X.X.X.X由字符串表示,但出现错误。

有什么办法可以让它工作吗?

谢谢,塔洛

4

1 回答 1

0

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

于 2017-04-06T14:22:07.663 回答