gpt4 book ai didi

python - Raspberry Pi Python-使用套接字多播UDP在本地网络上不起作用

转载 作者:行者123 更新时间:2023-12-03 12:08:47 25 4
gpt4 key购买 nike

我当前的设置是这样的:

  • 1 x电脑
  • 1 x GS308v2以太网集线器
  • 7 x树莓派的

  • 给pi的静态ip范围为192.168.1.2到192.168.1.9。 dhcpcd.conf文件如下:

    enter image description here

    发送者的python脚本:
    #!/usr/bin/python

    import socket
    import struct
    import sys
    import IN
    import subprocess
    import fcntl

    MULTICAST_GROUP = '224.1.1.1'
    MULTICAST_PORT = 12345

    path = "-o /var/www/html/images-folder/pic.jpg"

    SCMD = chr(1)
    SEND = SCMD + path
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    dev = "eth0" + "\0"
    sock.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, dev)
    sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
    sock.sendto(SEND, (MULTICAST_GROUP, MULTICAST_PORT))
    sock.close()

    接收者的python:
    #!/usr/bin/python

    import socket
    import struct
    import fcntl
    from subprocess import call
    import sys

    MULTICAST_GROUP = '224.1.1.1'
    MULTICAST_PORT = 12345

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)

    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    sock.bind(('', MULTICAST_PORT))
    req = struct.pack("4sl", socket.inet_aton(MULTICAST_GROUP), socket.INADDR_ANY)
    sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, req)

    while True:
    data = sock.recv(10240)

    所有这些都可以与路由器上的动态IP一起使用。但是不能在带有静态IP的HUB上工作。接收方脚本给出以下错误:
    Traceback (most recent call last):
    File "/home/pi/dummyPi.py", line 17, in <module>
    sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, req)
    File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
    socket.error: [Errno 19] No such device

    该Hub x pi网络如何配置为执行此多播?

    最佳答案

    原来的解决方案是,如果不使用路由器,则还必须为Linux设置多播路由。以下命令救了我:

    sudo ip route add 224.0.0.0/4 dev eth0

    如果有人想解释为什么这样做或该命令对网络确实起作用,我将很高兴学习。随时发表评论。

    关于python - Raspberry Pi Python-使用套接字多播UDP在本地网络上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48427484/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com