我在下面绘制了一张图表来帮助解决这个问题!
因此,一家公司发布了多播 UDP 源(公司 A),另一家公司连接到它(公司 B)。我有一个到公司 B 的点对点隧道。
我怎样才能让我们的机器加入 A 公司通过 B 公司机器发布的多播组?
如果我们这样做,我们可以从终端顺利 ping 公司 B 的机器
ping 192.168.255.1
但是,根据下面的 Python 脚本,我们没有得到任何数据。我猜是因为我们没有将数据包从 192.168.255.2(我们的机器)路由到 192.168.255.1(公司 B 的机器)
关于如何以最佳方式做到这一点,您有什么想法吗?
如果可以,我们该如何实现呢?
提前致谢!
这是我正在使用的套接字代码(Python):
import socket
import struct
MCAST_GRP = '233.xxx.xxx.xxx'
MCAST_PORT = 18000
host = '192.168.255.2'
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))
sock.setsockopt(socket.SOL_IP, socket.IP_ADD_MEMBERSHIP,
socket.inet_aton(MCAST_GRP) + socket.inet_aton(host))
while True:
print sock.recv(1024)
配置如下:
tunnel Link encap:UNSPEC HWaddr xx-xx-xx-xx-xx-xx-xx-xx-00-00-00-00-00-00-00-00
inet addr:192.168.255.2 P-t-P:192.168.255.2 Mask:255.255.255.252
inet6 addr: xxxx::xxx:xxxx:xxxx:xxxx/64 Scope:Link
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1476 Metric:1
RX packets:53 errors:0 dropped:0 overruns:0 frame:0
TX packets:167 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6872 (6.8 KB) TX bytes:17522 (17.5 KB)