将多播数据包发送到仅在br0接口上运行的虚拟机

时间:2019-03-06 06:25:34

标签: sockets interface udp wireshark multicast

我尝试使用以下代码将udp组播数据包发送到服务器正在运行的特定接口和端口,即br0和端口XXXX(服务器只能在br0接口上运行),这将向我提供其发现数据包。问题是

  1. 我没有从服务器得到回复。我认为数据包在到达服务器后会丢失。注意:数据包正在到达服务器,我使用wireshark-packet分析工具对其进行了检查。

  2. 在每次迭代中,数据包数据都会附加到udp流中,这可以通过wireshark的“跟随udp流”选项查看。我需要发送单独的udp流。例如,对于每个数据包,“ discovery_data”必须在每次迭代中发送。

以上两个问题需要帮助。

import socket
import time

MCAST_GRP='239.255.255.250'
MCAST_PORT=XXXX
data='discovery_data'
MULTICAST_TTL=32
sock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM,socket.IPPROTO_UDP)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, MULTICAST_TTL)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_IF,socket.inet_aton("10.224.1.1"))
while True:
    dt=sock.sendto(data,(MCAST_GRP,MCAST_PORT))
    print(dt)
    time.sleep(10)

0 个答案:

没有答案