Python多播无法在两台不同的计算机之间工作

时间:2016-07-14 03:06:22

标签: python sockets networking raspberry-pi multicast

我有一个服务器和客户端使用python脚本通过多播进行通信。当我将脚本放在同一台计算机上时,它们表现得很合适;也就是说,他们可以在彼此之间发送和接收数据。计算机正在运行Windows 10。

当我在计算机上放置一个脚本而在树莓派上放置一个脚本时,我的计算机除了它自己发送的消息外没有收到任何多播。树莓派收到了所有东西。

有谁能告诉我为什么我的电脑没有从树莓派中接收数据?我的计算机上可能有一个设置需要启用,或者我需要在脚本中配置一些东西?

我使用的代码如下:

import socket
import struct

MCAST_GRP = '224.1.1.1'
MCAST_PORT = 5007

def _send_socket(message):
    # Create socket to send validation on shooting
    send_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    dev = "eth0" + "\0"
    #sock2.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, dev)
    send_socket.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
    send_socket.sendto(message, (MCAST_GRP, MCAST_PORT))
    send_socket.close()

def _recv_socket(recieve_socket):
    data = recieve_socket.recv(10240)
    return data

def run():
    recieve_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    recieve_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    recieve_socket.bind(('', MCAST_PORT))
    mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY)
    recieve_socket.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

    while(True):

        data= _recv_socket(recieve_socket)
        if data:
            _send_socket("Sending something back")

0 个答案:

没有答案